为什么socket.gethostbyname(socket.getfqdn())和socket.gethostbyname(socket.gethostname())以不同的方式返回?

时间:2012-12-19 07:06:33

标签: sockets networking

我知道什么是fqdn和主机名。但我仍然不明白为什么这两个片段会返回不同的结果。
socket.gethostbyname(socket.gethostname())返回一个IP地址,这实际上是我在Windows上使用ipconfig命令看到的以太网适配器IP地址。但是socket.gethostbyname(socket.getfqdn())返回一个我在ipconfig显示中看不到的ip地址,既不是ethernet也不是ppp。它是什么?
gethostname的结果是相对于我的本地网络的ip地址和相对于整个网络的getfqdn吗? 如果我在远程网络中并且想要连接我的计算机或者我和我的计算机在同一个网络中,那么我应该使用哪一个?
实际上,当我尝试脱机两个片段时,它们都返回127.0.0.1。

1 个答案:

答案 0 :(得分:0)

当您脱机执行这些命令时,会得到127.0.0.1,因为在/ etc / hosts中,默认映射为:127.0.0.1 localhost。因此,您gethostname()已解析为localhost,gethostbyname()为127.0.0.1。

我相信,gethostbyname()将分别返回父域名的IP或getfqdn()和gethostname()的完全限定域名的IP。它可能不同或不同。