2015-04-17 98 views
-3

我必須驗證兩個IP地址是否可以通信。如果第一個IP位於更高的子網中,我還必須考慮。我設法通過導入netaddr(python)來檢查IP是否在同一網絡中,但是我卡住了。確定兩個IP地址是否可以通信

+2

嘗試從一臺機器ping到其他機器。用python你可以編寫一個簡單的客戶端服務器程序。在編寫客戶端服務器程序時,還要在服務器端公開'0.0.0.0'。 –

+0

我懷疑這可能更像是一個理論性的「家庭作業」式的問題,而不是真實的情況。並非所有連接到IP網絡的設備都會響應PING請求。 – SiHa

回答

1

通過檢查IP地址是否在相同的網絡/範圍內,您可以始終檢查IP是否可以理論上通過進行通信。這可以簡單地通過使用Python 3.3模塊ipaddress來實現。這裏有一個例子,我創建了兩個實例IPv4Address和一個IPv4Network實例。使用這個標準庫模塊,您可以簡單地檢查IPvAddress的實例是否在IPv4Network的實例中。

>>> import ipaddress 
>>> ip1 = ipaddress.IPv4Address('192.168.0.1') 
>>> ip2 = ipaddress.IPv4Address('192.168.0.2') 
>>> ip3 = ipaddress.IPv4Address('192.168.1.1') 
>>> net = ipaddress.IPv4Network('192.168.0.0/24') 
>>> ip1 in net 
True 
>>> ip2 in net 
True 
>>> ip3 in net 
False 
>>> 

請注意,該模塊ip地址只有的Python 3.3抵達。

另一件需要注意的事情是不能保證您指定的IP地址實際上可以相互通信。也許在特定的機器或網絡中存在一些防火牆規則。這只是一種理論方法,並不意味着適用於現實生活。

相關問題