Почему socket.gethostbyname (socket.gethostname) привязывается только к локальному IP-адресу? - PullRequest
0 голосов
/ 16 марта 2020

Я пишу сокетную программу для создания простого сервера. Когда я пишу ip = socket.gethostbyname(socket.gethostname()), а затем печатаю ip, он печатает 127.0.1.1 Почему это происходит?
Мое устройство подключено к мобильной точке доступа, но IP-адрес остается локальным.
Я использую ОС Ubuntu 19.04

1 Ответ

0 голосов
/ 16 марта 2020

Проблема в том, что хост имеет несколько интерфейсов. Это не проблема, если вы используете настоящий DNS или тщательно написанный от руки файл / etc / host, потому что тогда система будет искать там перевод. Но в зависимости от конфигурации имя хоста может быть связано со всеми доступными интерфейсами, включая петлевой. И gethostbyname возвращает адрес первого из этих интерфейсов в своем собственном порядке.

Чтобы убедиться в этом, вы должны использовать gethostbyname_ex, который возвращает список всех интерфейсов, и вы должны найти hostspot подключен один, в дополнение к петлевой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...