Tengo un código que usa un socket asíncrono para enviar un mensaje al cliente y esperar respuesta de él. Si el cliente no respondió en un interno especificado, considerará el tiempo de espera. Algunos de los artículos en Internet sugieren usar WaitOne, pero esto bloqueará el hilo y difiere el propósito de utilizar la finalización de E/S.¿Cómo manejar el tiempo de espera en Async Socket?
¿Cuál es la mejor manera de manejar el tiempo de espera en el socket asíncrono?
Sub OnSend(ByVal ar As IAsyncResult)
Dim socket As Socket = CType(ar.AsyncState ,Socket)
socket.EndSend(ar)
socket.BeginReceive(Me.ReceiveBuffer, 0, Me.ReceiveBuffer.Length, SocketFlags.None, New AsyncCallback(AddressOf OnReceive), socket)
End Sub
Encontré una respuesta similar. http://stackoverflow.com/questions/1231816/net-async-socket-timeout-check-thread-safety. La idea es tener un solo temporizador para controlar toda la conexión existente para verificar si se ha agotado el tiempo de espera. – kevin