从python获取IPv4地址,即使打开了vpn

时间:2017-10-19 23:04:19

标签: python ipv4

所以我使用socket将客户端连接到服务器。为此,我需要计算机的IP。目前,我找到的最好的方法是:

stringdist::phonetic

然后我使用请求告诉我的客户我的ip,他们连接。这里的问题是,当我的vpn打开时,我得到另一台主机,导致客户端无法连接。 但是当我打开命令提示符并输入ipconfig时,无论vpn状态如何,我都会得到正确的ip。所以我需要获得与在命令提示符下的IPv4下显示的相同的ip,这在python中是否可能?

我试图让服务器在任何设备上运行,不管这种情况如何。

谢谢!

1 个答案:

答案 0 :(得分:0)

检索系统IP地址的方式(目前大多数系统都有多个)使用系统的主机名,因此取决于DNS和本地主机文件。它只会给你一个地址,并且可能非常不可靠,正如你在VPN上看到的那样。

我建议使用netifaces包。有了它,您可以检索所有网络接口及其所有地址的列表。

手册中的一个例子:

>>> addrs = netifaces.ifaddresses('en0')
>>> addrs[netifaces.AF_INET]
[{'broadcast': '10.15.255.255', 'netmask': '255.240.0.0', 'addr': '10.0.1.4'}, {'broadcast': '192.168.0.255', 'addr': '192.168.0.47'}]

你应该能够用pip安装它。源存储库位于:https://bitbucket.org/al45tair/netifaces