-3
我必須驗證兩個IP地址是否可以通信。如果第一個IP位於更高的子網中,我還必須考慮。我設法通過導入netaddr(python)來檢查IP是否在同一網絡中,但是我卡住了。確定兩個IP地址是否可以通信
我必須驗證兩個IP地址是否可以通信。如果第一個IP位於更高的子網中,我還必須考慮。我設法通過導入netaddr(python)來檢查IP是否在同一網絡中,但是我卡住了。確定兩個IP地址是否可以通信
通過檢查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地址實際上可以相互通信。也許在特定的機器或網絡中存在一些防火牆規則。這只是一種理論方法,並不意味着適用於現實生活。
嘗試從一臺機器ping到其他機器。用python你可以編寫一個簡單的客戶端服務器程序。在編寫客戶端服務器程序時,還要在服務器端公開'0.0.0.0'。 –
我懷疑這可能更像是一個理論性的「家庭作業」式的問題,而不是真實的情況。並非所有連接到IP網絡的設備都會響應PING請求。 – SiHa