Reconozco que este tipo de pregunta tiene una larga historia, pero la forma en que estoy usando esto debe ser la correcta '.net' y, sin embargo, no parece funcionar.C# /. Net Socket.Shutdown
Tengo un daemon de servidor IP sincrónico trivial que hace un simple aceptar Socket, hacer algunas cosas, socket.send, socket.shutdown, socket.close. Mi cliente es otra aplicación trivial de C# que hace URLDownloadToFile.
Lo que sucede es que parte del tiempo URLDownloadToFilefails falla con (0x800C0008) .. piensa que su recurso de descarga falló.
Mi servidor secuencia de extremo lateral es:
socket.Shutdown(Both);
socket.Close();
Si cambio que esto
socket.Disconnect();
socket.Close();
(i abrir lo anterior con sockopt Linger cierto tiempo de espera de 5 segundos)
esto funciona estupendo.
Me falta algo en el método de apagado ... parece que la MS "magic bullet" quiere que uses para hacer una salida que finalmente enviará los datos de envío restantes.
Demasiado, (y esto no puede ser correcto) parece como el cierre ... mata cualquier proceso asíncrono que pueda estar en progreso desde el apagado().
¿Alguna idea?
del todo innecesaria antes de llamar Desconectar. El texto citado dice que debe cambiar la configuración antes de llamar a Desconectar. Si no, descartará los datos. – usr
¿No es eso lo que mi respuesta indica? Si cambia la configuración (que el OP indica que sí) no necesita el apagado si está contento con el comportamiento de tiempo de espera ... – ShuggyCoUk