gethostname和getfqdn之间有什么区别?

时间:2012-12-18 11:26:09

标签: python sockets

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

3 个答案:

答案 0 :(得分:6)

来自文档,

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

socket.getfqdn会返回完全限定的域名(如果可用)或gethostname

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

  

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

答案 1 :(得分:3)

请注意,上面选择的回复是相当令人困惑。

YES socket.getfqdn将返回一个完整限定的主机名。但如果它将成为“localhost.localdomain”'你可能实际上想要socket.gethostname,以便得到一些有用的东西。

不同之处在于,一个读取/etc/hostname/etc/domainname,而另一个读取内核节点名称。根据您的分配,配置,操作系统等,您的里程变化。

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

最后,python也有platform.node,它与python上的socket.gethostname基本相同,不过这可能是多平台代码的更好选择。

所以,是的,这是一个非常重要的细节。把这个放在这里所以我的同事总是先在谷歌中看到这个,可以看到这个; P

ps:嗨妈妈,pwnbus,alm。

答案 2 :(得分:1)

主机名不是完全限定的域名,因此它们会返回不同的结果。

getfqdn()将返回完全限定的域名,而gethostname()将返回主机名