仅仅是标题,它们之间有什么区别?在python中,socket.gethostbyname(socket.gethostname())和socket.gethostbyname(socket.getfqdn())在我的电脑上返回不同的结果。
发布于 2012-12-18 19:33:42
从文档中,
socket.gethostname返回一个字符串,其中包含当前正在执行Python解释器的机器的主机名。
如果可用,socket.getfqdn将返回完全限定的域名,否则将返回gethostname。
完全限定域名是指定其在DNS树层次结构中的确切位置的域名。来自维基百科的例子:
例如,假设设备的本地主机名为
,父域名为example.com,则完全限定的域名为myhost.example.com.
发布于 2017-04-11 02:14:49
请注意,上面选择的回复是相当令人困惑的。
是的,socket.getfqdn将返回完全限定的主机名。但是如果它是'localhost.localdomain‘,你可能实际上想要socket.gethostname,这样你就能得到一些有用的东西。
不同之处在于一个读取/etc/hostname和/etc/domainname,而另一个读取内核节点名。根据您的发行版、配置、操作系统等的不同,您的里程会有所不同。
这意味着您通常希望首先检查socket.getfqdn,并验证它是否返回'localhost.localdomain‘。如果是这样,请改用socket.gethostname。
最后,python还具有与python上的socket.gethostname基本相同的platform.node,尽管这对于多平台代码来说可能是更好的选择。
这是一个相当重要的细节。
发布于 2012-12-18 19:28:39
主机名不是完全限定的域名,因此它们返回不同的结果。
getfqdn()将返回完全限定域名,而gethostname()将返回主机名。
https://stackoverflow.com/questions/13931924
复制相似问题