getaddrinfo () возвращает 127.0.0.1 для удаленного хоста - PullRequest
0 голосов
/ 21 марта 2012

У меня есть приложение, которое использует getaddrinfo () для перевода с имени хоста ПК в рабочей группе Windows на адрес IPV4 для этого ПК в локальной сети. (Обратите внимание, я не имею в виду получение адреса ПК, на котором выполняется код, я имею в виду адрес другого ПК в локальной сети!) Это работает в полевых условиях, а также в лаборатории уже довольно давно, но теперь у меня Windows 7 (32-битный) ПК, который ведет себя аномально. Имя хоста для этого компьютера - «elbow».

Я скомпилировал пример кода, предоставленный Microsoft для getaddrinfo () в http://msdn.microsoft.com/en-us/library/windows/desktop/ms738520%28v=vs.85%29.aspx

Когда я запускаю этот пример кода на любом ПК в моей локальной сети и указываю «elbow» в качестве имени хоста, getaddrinfo () возвращает адрес обратной связи 127.0.0.1 вместо правильного (192.168.1.110). Однако, если я укажу любое другое имя хоста, getaddrinfo () вернет правильный адрес!

В какой-то момент в прошлом «локоть» НЕ проявлял такого поведения, поэтому ясно, что что-то в этом ПК изменилось, чтобы вызвать такое поведение. Я попытался восстановить образ диска ПК до такой степени, что я думаю , что это не вызвало такое поведение, но это не изменило. Также не имеет значения, является ли компьютер проводным или беспроводным, подключенным к локальной сети. DHCP включен для всех компьютеров в локальной сети. Такое поведение сохраняется даже при полном отключении питания всех ПК, маршрутизаторов и коммутаторов.

Ответы [ 2 ]

1 голос
/ 19 июля 2012

Хит похожую проблему и хотел опубликовать на случай, если кто-то еще нашел эту тему.

То же самое произошло на нашей стороне с установленным клиентом компьютером. Мы обнаружили, что клиент изменил свой файл hosts, чтобы связать 127.0.0.1 с именем компьютера ... отдельная программа, использующая getaddrinfo для поиска определенной подсети, продолжала отказывать ... в итоге он временно переименовал компьютер для использования этой функции, но также могли бы исправить их файл хоста.

Файл hosts на этом компьютере с Win 7 был найден в /windows/system32/drivers/etc.

0 голосов
/ 24 апреля 2012

Я хотел обновить это ответом. Слон в комнате был DNS провайдера. У меня было ошибочное впечатление, что моя подсеть была изолирована от DNS провайдеров, но это не так. По какой-то причине, их DNS возвращает 127.0.0.1 для имени хоста «elbow», но как только я переименовал его в другое, моя проблема обанкротилась! Я также обнаружил еще один ПК с такой же проблемой, и переименование исправило его. Общим для обоих компьютеров является то, что на обоих компьютерах произошла перезагрузка ОС, но проблема стала очевидной лишь через некоторое время после перезагрузки этих ОС.

...