Winsock recv: Seltsamer fehler

sheel

I love Asm
Hi

Ich bastel wieder einmal an einer Socket-anwendung rum, jetzt hab ich folgendes Problem:
eigentlich funktioniert alles : der client verbindet sich perfekt mit dem server, Daten austauschen geht auch super, nur verlasse ich mich drauf, dass das recv laut msdn 0 returnt, wenn das Gegenüber die Verbindung beendet...
ist aber nicht der fall.
es kommt immer -1 und drauf bei wsagetlasterror entweder 10053 oder 10054 zurück...
im msdn steht zwar, dass das bei einem ...Stromausfall etc auftreten kann, wenn nichts ordentlich geschlossen wird.
macht er aber, closesocket drauf, und dann krieg ich jedesmal einen der zwei Werte?
ist das ein bekannter Fehler oder? ich hab im Google (nach ca 1 woche suche) einen winzigen Artikel gefunden, indem Microsoft zugibt, im WinServer2003 da was falsch gemacht zu haben und ein Update anbietet...aber erstens hab ich XP und Zweitens
wärs nicht gut, mit einem 50K-Programm ein riesiges Update zum Installieren auszuliefern.


noch ein paar daten:
kein mfc etc
WinXP
WinSock2.2 verwendet
TCP/stream-verbindung

vielleicht hat ja wer sowas schon gehabt
Sheel
 
Eigentlich könnte es dir ja egal sein, ob bei recv() "0" zurückgegeben oder die angegebenen Fehlercodes produziert werden. Die Aussage ist immer, das der betreffende Socket "geplättet" wurde :-)

Um einen sogenannten "graceful disconnect" zu erreichen, könntest du versuchen, vor closesocket() noch "shutdown()" aufzurufen.

Gruß
MCoder
 
Zurück