c + + - Winsock recv ikke arbejder efter shutdown

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg forsøger at få et simpelt winsock program, der arbejder, så
Jeg opretter min stik og sender mine data helt fint. Så bruger jeg shutdown(ConnectSocket, SD\_SEND) som ifølge msdn, deaktiverer afsendelse af data, men ikke modtagelse? Eksemplet på msdn gør det også.


Men efter at jeg har ringet shutdown returnerer min recv-funktion 0 uden at modtage nogen data.

Hvis jeg kommenterer shutdown-koden, fungerer alt som det skal.


Mangler jeg noget?

Bedste reference


Nej, det er normalt. Den anden side reagerede på din nedlukning ved at lukke. En nulretur fra recv indikerer en normal afbrydelse af forbindelsen. Hvis du ikke vil have den anden side afbrudt sin halvdel af forbindelsen, Lad være med at lukke din.


(Hvad forventer du, at den anden side skal gøre, når opkaldet til recv returneres nul?)

Andre referencer 1


Hvis det er en HTTP-protokol, skal du bruge Forbindelse header for at lukke forbindelsen eller blive åbnet:


Forbindelse: Luk


i dette tilfælde behøver du ikke at afbryde afsendelse


eller


Forbindelse: hold i live


modtagelse vil sløjfe uden at lukke den afsendende del af forbindelsen