gethostbyname не работает для локального имени хоста после выхода из спящего режима (Vista+7?)

StackOverflow https://stackoverflow.com/questions/2153716

Вопрос

Просто интересно, заметил ли кто-нибудь это:

На компьютерах некоторых пользователей, на которых установлено наше программное обеспечение, иногда происходит вызов Win32 winsock. gethostbyname выходит из строя с кодом ошибки 11004.

В качестве аргумента gethostbyname я передаю результат из gethostname.

Теперь документы говорят, что 11004 — это WSANO_DATA.Ни одно из описаний не кажется актуальным (это происходит, если вы передаете адрес IP6, но, как я уже сказал, я передаю имя хоста).

Еще более интересно то, что MSDN предполагает, что эта комбинация (gethostname с последующим gethostbyname) никогда не должен давать сбой, даже если IP-адреса нет (в этом случае он просто вернет пустой список IP-адресов).Вот цитата из записи MSDN gethostname:

... гарантировано, что возвращаемое имя будет успешно проанализировано методами gethostbyname и WSAAsyncGetHostByName.

Это происходит только после выхода из спящего режима, в тот короткий период, когда сеть перезагружается, и только в Vista/7 (ну, я видел это только в Vista и 7).

Одна из моих теорий заключалась в том, что это связано с IP6.Возможно, в течение короткого периода времени сеть сообщает адрес IP6, но не соответствующий адрес IP4 (я почти уверен, что все клиентские машины имеют двойной стек IP, но я могу ошибаться).

Я попытался воспроизвести, отключив сетевую карту (чтобы отключить IP-адреса), но не смог воспроизвести.

Кто-нибудь видел это раньше?

Есть идеи?

Джон

Это было полезно?

Решение

Я думаю, тебя укусил крайний случай.

В конце концов, использование чего-то вроде спящего режима — это сложная вещь: восстановление ПК до его точного состояния и продолжение работы, как будто ничего не произошло.Это все хорошо, но некоторые вещи не сохранятся, например, любые сетевые соединения, ожидающие ответа, и любые регистры серьезно низкого уровня «вы не можете установить меня только для чтения» в ПРОЦЕССОР.

Я предлагаю вам связаться с Microsoft и спросить, знают ли они об этом.Если это работает для других ОС, они, скорее всего, захотят исправить это для 7/Vista.Просто будьте готовы передать двоичный файл, чтобы они могли его тестировать до бесконечности.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top