gpt4 book ai didi

python - socket.getfqdn() 和 socket.gethostname() 在使用 socket.gethostname 时给出不同的 IP 地址

转载 作者:太空狗 更新时间:2023-10-30 00:51:21 25 4
gpt4 key购买 nike

我正在运行一个虚拟机,它提供以下值以及运行代码的时间(通过在网站上执行一些操作)

socket.getfqdn()
x-vps-01.abc.it

socket.gethostname()
x-vps-01

socket.gethostbyname(socket.getfqdn())
216.185.103.35

socket.gethostbyname(socket.gethostname())
78.47.171.19

请注意,当我登录到终端并运行上面的命令时,我总是得到78.47.171.19

最佳答案

我试过你在 Linux 机器上做的事情。也许您应该说明您正在运行的操作系统和网络情况。

使用 strace 我发现 socket.getfqdn() 使用文件 /etc/hosts 中提供的信息,而 socket .gethostname() 只打印系统调用 uname() 的结果数据;基本上你可以说一个询问网络模块而另一个询问内核。两者都对您的问题有答案,但不一定匹配,因为他们对此事的看法不同。

调用 socket.gethostbyname() 还会查询网络模块(在我的例子中搜索文件 /etc/hosts 的内容以进行匹配)。将内核的答案提供给网络功能并不是您真正应该做的。在大多数情况下,这仍然有效。您发现了一个产生奇怪结果的地方。

关于python - socket.getfqdn() 和 socket.gethostname() 在使用 socket.gethostname 时给出不同的 IP 地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13309560/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com