确定两个IP地址是否可以通信

时间:2015-04-17 08:30:56

标签: python ip

我必须验证两个IP地址是否可以通信。如果第一个IP位于更高的子网中,我还必须考虑。我已经设法通过导入netaddr(python)检查IP是否在同一网络中,但我卡住了。

1 个答案:

答案 0 :(得分:2)

通过检查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
>>> 

请注意,模块ipaddress仅通过 Python 3.3 到达。

要记住的另一件事是无法保证,您指定的IP地址实际上可以相互通信。也许在特定机器或网络中存在一些防火墙规则。这只是一种理论方法,并不适用于现实生活。