У меня есть приложение, которое использует getaddrinfo() для преобразования имени хоста ПК в рабочей группе Windows в адрес IPV4 для этого ПК в локальной сети. (Обратите внимание, я не имею в виду получение адреса ПК, на котором работает код, я имею в виду адрес другого ПК в локальной сети!) Это уже довольно давно работает как в полевых условиях, так и в лаборатории, но теперь у меня есть компьютер с Windows 7 (32-разрядная версия), который ведет себя ненормально. Имя хоста для этого ПК — «локоть».
Я скомпилировал образец кода, предоставленный Microsoft для getaddrinfo(), по адресу http://msdn.microsoft.com/en-us/library/windows/desktop/ms738520%28v=vs.85%29.aspx
Когда я запускаю этот пример кода на любом ПК в своей локальной сети и указываю «локоть» в качестве имени хоста, getaddrinfo() возвращает адрес обратной связи 127.0.0.1 вместо правильного (192.168.1.110). Однако, если я укажу любое другое имя хоста, getaddrinfo() вернет правильный адрес!
В какой-то момент в прошлом «локоть» НЕ проявлял такого поведения, поэтому очевидно, что что-то в этом ПК изменилось, чтобы вызвать такое поведение. Я попытался восстановить образ диска ПК до того состояния, когда, по моему думаю, это не вызывало такого поведения, но это ничего не изменило. Также не имеет значения, подключен ли ПК к локальной сети проводным или беспроводным способом. DHCP включен для всех ПК в локальной сети. Такое поведение сохраняется даже при полном отключении питания всех ПК, маршрутизаторов и коммутаторов.