Domanda

    

Questa domanda ha già una risposta qui:

         

Ho un'app che si collega a un host che potrebbe essere inattivo. Se l'host è inattivo, non voglio attendere i 30 secondi circa necessari per il timeout. Al momento sto utilizzando socket di blocco.

Ho guardato socket.poll () e socket.select () ma preferirei avere solo un'impostazione del tempo sul socket. Non mi importa se è un'impostazione che devo fare da qualche parte nel sistema. Inoltre, mi è sembrato di capire che il sondaggio e selezionare non funzionano con la comunicazione orientata alla connessione - è corretto?

Se questo è assolutamente impossibile, qual è un bel modo per ottenere i risultati che voglio usando il sondaggio, selezionare o un'altra tecnica?

È stato utile?

Soluzione

Vedi BeginConnect e Panoramica sulla programmazione asincrona

IAsyncResult asr = socket.BeginConnect( ip, port, null, null );

bool res = asr.AsyncWaitHandle.WaitOne( 10000, true );  // 10 sec timeout

Aggiornamento: c'è un esempio migliore qui .

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