路由選擇核心邏輯:將目標 IP 與路由器子網掩碼按位「與」運算,得到網絡地址,若與路由器配置的網絡地址一致,則可通過該路由轉發。本文提供 WinForm 界面與核心算法完整實現。
private byte ConvertToBinary(byte x)
{
string binary = Convert.ToString(x, 2).PadLeft(8, '0');
return Convert.ToByte(binary, 2);
}
private bool Match(byte ipByte, byte maskByte, byte netByte)
{
// (ip & mask) == net
return ((ipByte & maskByte) == netByte);
}
// 按鈕點擊事件中調用
byte a1 = ConvertToBinary((byte)numIP1.Value); // 目標 IP 各段
byte b1 = ConvertToBinary((byte)numMask1.Value); // 子網掩碼各段
byte n1 = ConvertToBinary((byte)numNet1.Value); // 路由網絡地址各段
// ... 同理處理 a2~a4, b2~b4, n2~n4
if (Match(a1,b1,n1) && Match(a2,b2,n2) && Match(a3,b3,n3) && Match(a4,b4,n4))
MessageBox.Show("可通過該路由轉發");
else
MessageBox.Show("不可轉發,請換路由");
使用 16 個 NumericUpDown 分別輸入目標 IP、子網掩碼、路由網絡地址的 4 段,點擊按鈕觸發判斷並顯示結果。

圖中目標 IP 130.50.15.9 與掩碼 255.255.252.0 運算得 130.50.12.0,不等於路由網絡地址 130.50.15.0,故不可轉發。
IPAddress 擴展方法,支援 CIDR 表示法。