socket.gethostname()返回错误的主机名

时间:2018-06-02 02:56:30

标签: python macos sockets hostname

当我设置我的Macbook Pro时,我改变了我的主机名,我想我的名字为Tristan。我正在尝试使用套接字并致电:

socket.gethostbyname(socket.gethostname())

它没有给我错误socket.gaierror: [Errno 8] nodename nor servname provided, or not known

我认为这是一个问题,因为我更改了名称。如果我输入:

socket.gethostname('Tristan.local')

它实际上打印出正确的IP地址。我朋友的Mac没有更改主机名,它返回了她所在网络的地址。如何将主机名更改回本地主机名或我需要做的任何事情,以便:

socket.gethostbyname(socket.gethostname())

再次工作?我认为当时把它改成我的名字当时很有趣,但现在我很遗憾。

1 个答案:

答案 0 :(得分:-1)

gethostname通常只会报告/etc/hostname或其中的等价物,而这可能只是一个名称。 gethostbyname尝试解析该名称,除非它也在/etc/hosts之类,某些系统设置为匹配,并且您的配置DNS服务器无法解析,那你得到一个错误。

因此,您可以尝试修改/etc/hosts中的名称(如果它位于旧名称下面),或者您可以忽略该名称,并按原样使用您的主机名。

请记住,除非您的公共和私人IP与DNS结果无关,否则无效。您可能想要的是点击Ipify之类的服务来确定您的实际外部IP是什么。