I'm trying to get a simple winsock program working, so
I create my socket and send my data just fine. Then I use shutdown(ConnectSocket, SD_SEND)
which according to msdn, disables sending data, but not receiving? The example on msdn does this too.
But after I call shutdown
my recv function returns 0 without receiving any data.
If I comment out the shutdown code, everything works as it should.
Am I missing something?
No, that's normal. The other side responded to your shutdown by shutting down. A zero return from recv
indicates a normal connection shutdown. If you don't want the other side to shutdown its half of the connection, don't shut down yours.
(What did you expect the other side to do when its call to recv
returned zero?)
If it's an HTTP protocol, use Connection header to close connection or keep opened:
Connection: Close
in this case you don't need to shutdown sending
or
Connection: keep-alive
receiving will loop without shutting down the sending part of connection