У меня есть приложение, которое использует 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 включен для всех компьютеров в локальной сети. Такое поведение сохраняется даже при полном отключении питания всех ПК, маршрутизаторов и коммутаторов.