gethostbyname falla por nombre del ordenador local después de salir de hibernación (Vista + 7?)

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

Pregunta

Sólo me preguntaba si alguien más ha visto esto:

En las máquinas de algunos usuarios que ejecutan el software, de vez en cuando la llamada a Winsock Win32 gethostbyname falla con código de error 11004.

Para el argumento a gethostbyname, estoy pasando en el resultado de gethostname.

Ahora los docs decir 11004 es WSANO_DATA. Ninguna de las descripciones parecen ser relevantes (que se produce cuando se pasa en una dirección IP 6, pero como digo, estoy pasando un nombre de host).

Aún más interesante es que el MSDN sugiere que esta combinación (gethostname seguido por gethostbyname) nunca debe fallar, incluso si no hay una dirección IP (en ese caso sería simplemente volver lista vacía de IPs). Aquí está la cita de la gethostname entrada de MSDN:

  

... se garantiza que el nombre devuelto será analizado con éxito por gethostbyname y WSAAsyncGetHostByName.

Sólo se llega a suceder después de salir de hibernación, en ese corto período en el que la red se reinicia, y sólo en Vista / 7 (así que sólo he visto que en Vista y 7).

Una de las teorías que tuve fue que se relaciona con IP6. Tal vez por un período corto de la red informa de una dirección IP 6 pero no la dirección IP4 corresponging (estoy bastante seguro de que todas las máquinas cliente son de doble pila IP, pero podría estar equivocado).

He intentado reproducir apagando mi tarjeta de red (para obligar a ninguna dirección IP) y no podía reproducirse.

Alguien ha visto esto antes?

¿Alguna idea?

John

¿Fue útil?

Solución

creo que ha sido mordido por un caso extremo.

Al final del día, hacer algo como hibernación es avanzada Dalla - la restauración de un PC a su estado exacto y continuar como si nada hubiera sucedido. Eso es todo muy bien, pero algunas cosas no han sobrevivido, como cualquier conexión de red que espera una respuesta, y cualquier seriamente registros en el bajo nivel-no-puedes-set-me-me-Sólo lectura CPU.

Le sugiero que en contacto con Microsoft y preguntarles si saben acerca de esto. Si funciona para otros sistemas operativos que lo más probable estar interesado en fijándola para el 7 / Vista. Solo debe estar preparado a mano sobre un binario para que puedan probarlo ad infinitum.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top