Como faço para definir o tempo limite de uma chamada Socket.connect ()? [duplicado]
Pergunta
Esta questão já tem uma resposta aqui:
- Como tomada configure Connect Timeout 11 respostas
Eu tenho um aplicativo que se conecta a um host que pode ser para baixo. Se o anfitrião é baixo Eu não quero esperar para o 30 ou mais segundos leva para tempo limite. Eu estou usando soquetes bloqueio no momento.
Eu estive olhando socket.poll () e socket.select (), mas eu prefiro ter um ajuste de tempo no soquete. Eu não me importo se é uma configuração que tenho de fazer em algum lugar do sistema. Além disso, eu parecia entender que pesquisa e selecione não trabalham com comunicação orientada conexão -é este correto?
Se isso é absolutamente impossível, o que é uma boa maneira de obter os resultados que eu quero usando sondagem, selecione ou alguma outra técnica?
Solução
Consulte BeginConnect Asynchronous Programming Overview
IAsyncResult asr = socket.BeginConnect( ip, port, null, null );
bool res = asr.AsyncWaitHandle.WaitOne( 10000, true ); // 10 sec timeout
Update: Há um exemplo melhor aqui .