判斷兩個IP是否屬於同一子網(20200309)

2021-10-03 16:55:06 字數 2767 閱讀 3391

子網掩碼是用來判斷任意兩台計算機的ip位址是否屬於同一子網路的根據。

子網掩碼與ip位址結構相同,是32位二進位制數,其中網路號部分全為「1」和主機號部分全為「0」。利用子網掩碼可以判斷兩台主機是否中同一子網中。若兩台主機的ip位址分別與它們的子網掩碼相「與」後的結果相同,則說明這兩台主機在同一子網中。

示例:

i p 位址1  192.168.0.1

子網掩碼  255.255.255.0

轉化為二進位制進行運算:

i p 位址 11010000.10101000.00000000.00000001

子網掩碼 11111111.11111111.11111111.00000000

and運算11000000.10101000.00000000.00000000

轉化為十進位制後為:192.168.0.0

i p 位址2  192.168.0.254

子網掩碼  255.255.255.0

轉化為二進位制進行運算:

i p 位址 11010000.10101000.00000000.11111110

子網掩碼 11111111.11111111.11111111.00000000

and運算11000000.10101000.00000000.00000000

轉化為十進位制後為:192.168.0.0

通過以上對兩台計算機ip位址與子網掩碼的and運算後,我們可以看到它運算結果是一樣的。均為192.168.0.0,所以這二台計算機可視為是同一子網路。

/*

* 功能: 判斷兩台計算機ip位址是同一子網路。

* 輸入引數:

* string mask: 子網掩碼,格式:「255.255.255.0」;

* string ip1: 計算機1的ip位址,格式:「192.168.0.254」;

* string ip2: 計算機2的ip位址,格式:「192.168.0.1」;

* 返回值:

* 0:ip1與ip2屬於同一子網路;

* 1:ip位址或子網掩碼格式非法;

* 2:ip1與ip2不屬於同一子網路

*/public int checknetsegment(string mask, string ip1, string ip2)

輸入描述:

輸入子網掩碼、兩個ip位址

輸出描述:

得到計算結果

示例1

輸入255.255.255.0 192.168.224.256 192.168.10.4輸出1

思路:通過.分割ip和子網掩碼的每段,分別進行判斷

1、合法:0-255

2、網段:方法如題所述

#coding=utf-8

defchecknetsegment

(mask,ip1,ip2)

: arr1=ip1.split(

'.')

arr2=ip2.split(

'.')

arr=mask.split(

'.')

count=

0 flag=

0#判斷ip和子網掩碼是否非法

for i in

range(4

):if arr1[i]

>

'255'

or arr1[i]

<

'0':

count+=

1if arr2[i]

>

'255'

or arr2[i]

<

'0':

count+=

1if arr[i]

=='255'

or arr[i]

=='0'

: flag=

1else

: flag=

2if count!=

0or flag>1:

return

1 s1=

'' s2=

''#兩個ip屬於同一子網

for i in

range(4

):s1+=

str(

int(arr1[i])&

int(arr[i]))

+'.'

s2+=

str(

int(arr2[i])&

int(arr[i]))

+'.'

s1=s1[

:len

(s1)-1

] s2=s2[

:len

(s2)-1

]if s1==s2:

return

0else

:return

2if __name__==

'__main__'

: ip1 =

input()

ip2 =

input()

mask =

input()

count=checknetsegment(mask,ip1,ip2)

print

(count)

判斷兩個IP是否處於同一子網(網段)

a ip 202.194.128.9 b ip 202.194.128.14 子網掩碼 255.255.255.01.把a和b的位址轉換為二進位制的 a 1100 1010.1100 0010.1000 0000.0000 1001 b 1100 1010.1100 0010.1000 0000.0...

判斷兩個IP時候屬於同乙個子網(華為機試)

給定兩個ip和乙個子網掩碼,判斷兩個ip是否屬於同一子網。輸出0代表不是同一子網,輸出1代表是同一子網。同時輸出第乙個ip與子網掩碼相與的結果。保證輸入資料合法 子網掩碼 11111111.11111111.11111111.00000000 and運算 11010000.10101000.0000...

如何判斷兩個IP屬於同乙個網路

ip位址 網路位址 主機位址 又稱 主機號和網路號組成 ip位址是乙個 4 8bit 1位元組 由 0 1 組成的數字串 ip4協議 子網掩碼又叫網路掩碼 位址掩碼 子網路遮罩,是乙個 4 8bit 1位元組 由 0 1 組成的數字串 它的作用是遮蔽 遮住 ip位址的一部分以劃分成網路位址和主機位址...