gethostbyname échoue pour nom d'hôte local après la reprise de la mise en veille prolongée (Vista + 7?)

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

Question

Je me demandais si quelqu'un d'autre a repéré ceci:

Sur certains des machines de l'utilisateur exécutant notre logiciel, à l'occasion de l'appel à Win32 Winsock gethostbyname échoue avec le code d'erreur 11004.

Pour l'argument Gethostbyname, je passe dans le résultat de gethostname.

Maintenant, les docs disent 11004 est WSANO_DATA. Aucune des descriptions semblent être pertinents (il se produit si vous passez dans une adresse IP6, mais comme je le dis, je passe dans un nom d'hôte).

Encore plus intéressant est que le MSDN suggère que cette combinaison (gethostname suivie gethostbyname) ne manquant pas, pas même s'il n'y a pas d'adresse IP (dans ce cas, il suffit de retourner une liste vide d'adresses IP). Voici la citation de l'entrée gethostname MSDN:

  

... il est garanti que le nom retourné sera analysé avec succès par gethostbyname et WSAAsyncGetHostByName.

Il ne se passe jamais après la reprise de mise en veille prolongée, pendant cette courte période lorsque le réseau redémarre, et uniquement sur Vista / 7 (bien que je ne l'ai vu sur Vista et 7).

Une théorie que j'avais été que lié à IP6. Peut-être pour une courte période le réseau signale une adresse IP6 mais pas la corresponging adresse IP4 (je suis sûr que toutes les machines clientes sont pile IP double, mais je peux me tromper).

J'ai essayé de reproduire en désactivant ma carte réseau (pour forcer aucune adresse IP) et ne pouvait pas se reproduire.

Tout le monde vu ceci avant?

Toutes les idées?

John

Était-ce utile?

La solution

Je pense que vous avez été mordu par un cas limite.

A la fin de la journée à faire quelque chose comme mise en veille prolongée est une chose avancée - la restauration d'un PC à son état exact et continuer comme si rien était arrivé. C'est tout bien et bon, mais certaines choses n'ont survécu, comme toutes les connexions réseau qui attend une réponse, et tout au sérieux à faible niveau bit Set-vous-ne-me-ne me-lecture des registres dans le CPU.

Je vous suggère de contacter Microsoft et leur demander s'ils savent à ce sujet. Si cela fonctionne pour d'autres systèmes d'exploitation, ils seront très probablement intéressés à fixer pour 7 / Vista. Juste être prêt à remettre un binaire afin qu'ils puissent tester ad infinitum.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top