getaddrinfo() връща 127.0.0.1 за отдалечен хост

Имам приложение, което използва getaddrinfo() за превод от името на хоста на компютър в Windows Workgroup към IPV4 адреса за този компютър в LAN. (Забележете, че нямам предвид получаването на адреса на компютъра, на който се изпълнява кодът, имам предвид адреса на друг компютър в LAN!) Това работи както на полето, така и в лабораторията от доста време, но сега имам компютър с Windows 7 (32 бита), който се държи необичайно. Името на хоста за този компютър е "elbow".

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

Когато стартирам този примерен код на който и да е компютър в моята LAN и посоча "elbow" като име на хост, getaddrinfo() връща обратния адрес 127.0.0.1 вместо правилния (192.168.1.110). Въпреки това, ако посоча друго име на хост, getaddrinfo() връща правилния адрес!

В някакъв момент в миналото "лакът" НЕ е проявявал това поведение, така че очевидно нещо в този компютър се е променило, за да причини това поведение. Опитах се да възстановя изображението на компютърния диск до точка, в която мисля, че не е причинило това поведение, но това не доведе до промяна. Също така няма значение дали компютърът е кабелно или безжично свързан към LAN. DHCP е активиран за всички компютри в LAN. Поведението е постоянно дори при пълно изключване на всички компютри, рутери и комутатори.


person pnswdv    schedule 21.03.2012    source източник
comment
Моят неправилен отговор го няма. Виждам, че не сте имали друга активност по този въпрос; това наистина е загадка. Късмет!   -  person Mark Ransom    schedule 29.03.2012
comment
Изключително странно е! И е еднопосочен - странният компютър няма проблем да получи правилния IP за всички останали компютри. Сякаш има някаква настройка за сигурност, която прави IP невидим. Търсил съм такава настройка и преди, но знаете ли, мисля да погледна отново...   -  person pnswdv    schedule 29.03.2012


Отговори (2)


Получих подобен проблем и исках да публикувам в случай, че някой друг намери тази тема.

Същото се случи от наша страна с компютър, инсталиран от клиента. Открихме, че клиентът е променил своя hosts файл, за да свърже 127.0.0.1 с името на компютъра... отделна програма, използваща getaddrinfo за намиране на определена подмрежа, продължаваше да се проваля... те накрая преименуваха компютъра временно, за да използват тази функция, но също така можеше да поправи техния хост файл.

Файлът hosts на този компютър с Win 7 беше намерен в /windows/system32/drivers/etc.

person SEM    schedule 19.07.2012

Исках да актуализирам това с отговора. Слонът в стаята беше DNS на ISP. Бях с погрешно впечатление, че подмрежата ми е изолирана от DNS на ISP, но това не беше така. По някаква причина техният DNS връща 127.0.0.1 за името на хоста „elbow“, но веднага щом го преименувах на нещо друго, проблемът ми изчезна! Също така открих друг компютър, който имаше същия проблем, и преименуването му също го поправи. Общото между двата компютъра е, че и двата са претърпели презареждане на операционната система, но проблемът не стана ясен до известно време след тези презареждания на операционната система.

person pnswdv    schedule 24.04.2012