c++ - instalar - Winsock recv no funciona después del cierre
winsock example (2)
Intento que funcione un programa winsock simple, así que creo mi socket y envío mis datos sin problemas. Luego uso shutdown(ConnectSocket, SD_SEND)
que de acuerdo con msdn, desactiva el envío de datos, pero no recibe? El ejemplo en msdn también lo hace.
Pero después de llamar a shutdown
mi función recv devuelve 0 sin recibir ningún dato.
Si comento el código de apagado, todo funciona como debería.
¿Me estoy perdiendo de algo?
No, eso es normal. El otro lado respondió a tu parada cerrando. Un retorno cero de recv
indica un apagado de conexión normal. Si no quieres que el otro lado cierre su mitad de la conexión, no apagues la tuya.
(¿Qué esperabas que hiciera la otra parte cuando su llamada a recv
devolvió cero?)
Si se trata de un protocolo HTTP, use el encabezado de conexión para cerrar la conexión o mantener abierto:
Conexión: Cerrar
en este caso, no necesita cerrar el envío
o
Conexión: keep-alive
la recepción se repetirá sin cerrar la parte de envío de la conexión