【发布时间】:2019-03-10 00:07:18
【问题描述】:
我想用 python 代码获取我的本地 IP 地址 以及 网络的子网掩码。 我尝试使用此代码获取 IP 地址:
import socket
print socket.gethostbyname(socket.gethostname())
但是我得到了这个 IP > 169.254.236.99,这不是我的本地 IP 地址。
所以也许你可以帮我做这件事?谢谢。
编辑:我找到了适用于 Linux 和 Windows 的 IP 地址 的不错解决方案
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.connect(("8.8.8.8", 80))
print(s.getsockname()[0])
因此,如果您能帮我解决子网掩码问题,那将非常有帮助:)
【问题讨论】:
-
问题是您的计算机有多个网络适配器和多个地址。 169 位于用于 pcap 的虚拟接口上。您可以使用 pip 中的
ifaddr之类的东西来列出所有这些。 -
你说得对,我找到了解决方案。也许你可以帮我解决子网掩码?
-
您还需要 IP 掩码吗?试试这个:stackoverflow.com/a/10508732/9808870 但是,您必须知道掩码的位数(通常是无符号 32 位整数)。
-
这不是我需要的,因为我不知道掩码的位数.. 但感谢您的评论
-
对不起,我修改了我的评论。 IPv4 的掩码通常为 32 位(4 字节 x 8 位)。
标签: python networking