2015-04-17 51 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地址实际上可以相互通信。也许在特定的机器或网络中存在一些防火墙规则。这只是一种理论方法,并不意味着适用于现实生活。

相关问题