Domanda

Basta chiedersi se qualcun altro ha notato questo:

Su macchine di qualche utente in esecuzione il nostro software, di tanto in tanto la chiamata a Win32 Winsock gethostbyname viene a mancare con il codice di errore 11004.

Per l'argomento a gethostbyname, sto passando nel risultato da gethostname.

Ora i documenti dicono 11004 è WSANO_DATA. Nessuna delle descrizioni sembrano essere rilevanti (si verifica se si passa a un indirizzo IP6, ma come ho detto, sto passando un nome host).

Ancora più interessante è che il MSDN suggerisce che questa combinazione (gethostname seguito da gethostbyname) non dovrebbe mai mancare, anche se non v'è alcun indirizzo IP (in questo caso sarebbe solo tornare elenco vuoto di indirizzi IP). Ecco la citazione dall'entrata MSDN gethostname:

  

... si garantisce che il nome restituito verrà analizzato correttamente da gethostbyname e WSAAsyncGetHostByName.

E 'sempre e solo avviene dopo il ripristino dalla sospensione, in quel breve periodo in cui la rete viene riavviato, e solo su Vista / 7 (beh ho visto solo su Vista e 7).

Una teoria che avevo era che si riferiva a IP6. Forse per un breve periodo la rete segnala un indirizzo IP6 ma non l'indirizzo corresponging IP4 (sono abbastanza sicuro che tutte le macchine client sono dual stack IP, ma potrei sbagliarmi).

Ho cercato di riprodurre spegnendo la mia scheda di rete (per forzare indirizzi IP) e non poteva riprodursi.

Qualcuno ha visto questo prima?

Tutte le idee?

Giovanni

È stato utile?

Soluzione

Credo che sei stato morso da un caso limite.

Alla fine della giornata, fare qualcosa come Hibernate è roba avanzata - il ripristino di un PC allo stato esatto e continua come se nulla fosse accaduto. Questo è tutto molto bello, ma alcune cose non sono sopravvissuti, come ad esempio le connessioni di rete che prevede una risposta, e qualsiasi serio basso livello-you-non-SET-me-solo-lettura-me registri nel CPU.

Vi invito a contattare Microsoft e chiedere loro se sanno di questo. Se funziona per altri sistemi operativi saranno molto probabilmente essere interessati a risolverlo per 7 / Vista. Basta essere disposti a consegnare un binario in modo che possano testare ad-all'infinito.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top