socket.gethostname () возвращает неправильное имя хоста - PullRequest
0 голосов
/ 02 июня 2018

Когда я настраивал свой 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 голосов
/ 02 июня 2018

gethostname обычно просто сообщает, что в нем содержится /etc/hostname или его эквивалента, и это может быть просто выдуманным именем.gethostbyname пытается разрешить это имя, и если оно не совпадает с /etc/hosts, с которым некоторые системы настроены для соответствия, и оно не может быть разрешено вашими настроенными DNS-серверами, вы получите ошибку.

Таким образом, вы можете попробовать исправить имя в /etc/hosts, если оно было там сначала под старым именем, или вы можете игнорировать это и просто использовать ваше имя хоста как есть.

Помните, если только вы нечастный IP совпадает с тем, что результат DNS бесполезен.Вероятно, вы захотите воспользоваться услугой типа Ipify , чтобы определить, какой у вас реальный внешний IP-адрес.

...