Como faço para definir o tempo limite de uma chamada Socket.connect ()? [duplicado]

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

  •  19-08-2019
  •  | 
  •  

Pergunta

Esta questão já tem uma resposta aqui:

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?

Foi útil?

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 .

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top