-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