Parece que cuando llama al Socket.AcceptAsync
con un SocketAsyncEventArgs
válido y tiene el evento SocketAsyncEventArgs.Completed
amañado correctamente y no se acepta conexión durante un período de tiempo muy largo que simplemente restablece la conexión. Sin embargo, mi Socket.ReceiveTimeout
y Socket.SendTimeout
son ambos cero.¿Por qué System.Net.Sockets.Socket.AcceptAsync se completa con ConnectionReset después de un largo tiempo de inactividad?
No estoy seguro de cómo configurar el tiempo de espera para aceptar las conexiones e incluso si es una buena idea. ¿Alguien tiene una solución alternativa y tal vez alguna información sobre por qué este es el comportamiento predeterminado?
I filed a bug report en Microsoft Connect para ver si tienen algún razonamiento detrás de por qué el tiempo de espera es inestable. Algunas veces se agota en cinco minutos y otras veces en más de dos horas.
¿Has comprobado qué está pasando en el cable con wireshark o algo así? ConnectionReset debe estar relacionado con un socket conectado, no con un socket de escucha. –
Originalmente había asumido lo mismo y por eso estoy tan confundido con esto. Estoy ejecutando una prueba con el registro de wireshark mientras hablamos y publicaremos los resultados cuando suceda. –
@NikolaiNFetissov Lo has clavado. Encontrado la raíz del problema finalmente. –