個人理解,歡迎指正。
一、要判斷兩個IP地址是不是在同一個網段,就將它們的IP地址分別與子網掩碼做與運算,得到的結果-->網絡號,如果網絡號相同,
就在同一子網,否則,不在同一子網。
例:假定選擇了子網掩碼255.255.254.0,把IP地址和子網掩碼轉換為二進制,分別將上述兩個IP地址分別與掩碼做與運算,如下所示:
211.95.165.24 11010011 01011111 10100101 00011000
255.255.254.0 11111111 11111111 111111110 00000000
與的結果是: 11010011 01011111 10100100 00000000
211.95.164.78 11010011 01011111 10100100 01001110
255.255.254.0 11111111 11111111 111111110 00000000
與的結果是: 11010011 01011111 10100100 00000000
可以看出,得到的結果(這個結果就是網絡地址)都是一樣的,因此可以判斷這兩個IP地址在同一個子網。
一、互聯網的地址
互聯網上的每個接口必須有個唯一的Internet地址(也稱作IP地址),IP地址長32bit,Internet地址並不采用平面形式的地址空間,如1,2,3等。
五類不同的互聯網復制格式如圖所示:

五類互聯網IP地址
這些32位的地址通常寫成四個十進制的數,其中每個整數對應一個字節。這種表示方法稱為"點分十進制表示法"。如:192.168.10.11。
① IP地址 和 子網掩碼相與得到得到網絡號
② 子網掩碼先取反,在 和 IP地址相與得到主機號
判斷兩個Ip是否在同一網段的方法,前提是兩個ip的子網掩碼相同;(子網掩碼,ip1,ip2)
public static bool CheckIPAndMask(string mask,string ip1,string ip2){ string[] maskList=mask.Split('.'); string[] ip1List=ip1.Split('.'); string[] ip2List=ip2.Split('.'); for(int j=0;j<maskList.length;j++) { if((int.Parse(ip1List[j])&int.Parse(maskList[j]))!= (int.Parse(ip1List[j])&int.Parse(maskList[j]))) { return false; } } return true; }