gethostname和getfqdn之间有什么区别?

abc*_*azx 4 python sockets

只是标题,它们之间有什么区别?在python中,socket.gethostbyname(socket.gethostname())socket.gethostbyname(socket.getfqdn())在我的计算机上返回不同的结果.

Ale*_*yev 6

从文档,

socket.gethostname 返回一个字符串,其中包含Python解释器当前正在执行的机器的主机名.

socket.getfqdn如果可用,gethostname则返回完全限定的域名.

完全限定域名是一个域名,用于指定其在DNS树层次结构中的确切位置.来自维基百科的例子:

例如,给定具有本地主机名myhost和父域名example.com的设备,完全限定的域名为myhost.example.com.


小智 5

请注意,上面选定的回复相当混乱。

YESsocket.getfqdn将返回完全限定的主机名。但如果它是“localhost.localdomain”,您可能实际上想要socket.gethostname改为这样,这样您就可以得到一些有用的东西。

区别在于,一个读取/etc/hostname和 ,/etc/domainname而另一个读取内核节点名。根据您的发行版、配置、操作系统等,您的里程会有所不同。

这意味着您通常要首先检查socket.getfqdn并验证它是否返回“localhost.localdomain”。如果是,请socket.gethostname改用。

最后,python 也有与 pythonplatform.node基本相同的功能socket.gethostname,尽管这对于多平台代码来说可能是更好的选择。

这是一个非常重要的细节。