![同一本地网络上两台计算机之间的IP地址差异](https://linux22.com/image/661736/%E5%90%8C%E4%B8%80%E6%9C%AC%E5%9C%B0%E7%BD%91%E7%BB%9C%E4%B8%8A%E4%B8%A4%E5%8F%B0%E8%AE%A1%E7%AE%97%E6%9C%BA%E4%B9%8B%E9%97%B4%E7%9A%84IP%E5%9C%B0%E5%9D%80%E5%B7%AE%E5%BC%82.png)
为什么 python 命令print(socket.gethostbyname(socket.gethostname()))
给出:
当我的笔记本电脑和 Raspberry PI 在同一个本地网络上时,它们的 IP 地址是 192.168.1.4,而我的 Raspberry PI 上的 IP 地址是 127.0.1.1,并且 PI 的 IP 地址是静态的 192.168.1.61?
请温柔一点,我对网络术语和理解有点不清楚:)
答案1
gethostbyname
自从十多年前推出以来,它已经过时了getaddrinfo
。然而,它们都不是用来查找软件运行所在主机的 IP 地址的。
为了找到运行软件的主机的 IP 地址,最简单的方法是创建一个 UDP 套接字并将其连接到您想要与之通信的远程地址。
import socket
s = socket.socket(socket.AF_INET6, socket.SOCK_DGRAM, 0)
s.connect(('2001:db8::', 53))
print s.getsockname()
在具有多个 IP 地址的主机上,这可能会产生不同的结果,具体取决于您在代码中指定的远程地址。