Estoy buscando una forma de hacer un control de mantener vivo en .NET. El escenario es para UDP y TCP.¿Cuál es la mejor manera de mantener vivo el control de socket en .NET?
Actualmente en TCP, lo que hago es que un lado se conecta y cuando no hay datos para enviar envía un mantener vivo cada X segundos.
Quiero que el otro lado compruebe los datos, y si no se recibió en X segundos, para generar un evento más o menos.
Una forma en que traté de hacerlo fue hacer un bloqueo de recepción y configurar el RecieveTimeout del zócalo en X segundos. Pero el problema era que cada vez que pasaba el tiempo de espera, la recepción del zócalo arrojaba una excepción SocketExeception y el zócalo de este lado se cerraba, ¿es este el comportamiento correcto? ¿por qué el socket se cierra/muere después del tiempo de espera en lugar de simplemente continuar?
Una verificación de si hay datos y la suspensión no es aceptable (ya que podría estar retrasada en la recepción de datos mientras duermo).
Entonces, ¿cuál es la mejor manera de hacerlo, y por qué el método que describí del otro lado está fallando?
Sí, se olvidó de mencionar las operaciones asincrónicas, pero lo que mi pregunta es ¿Alguien tiene experiencia con RecieveTimeout y por qué se produce un error en la forma anterior (porque entonces mi código sería aún más fácil a continuación, utilizando RecieveTimeout. –