CAsyncSocket::OnClose(): Aufruf von Receive() notwendig?
-
Hallo zusammen,
ist es notwendig
Receive()
innerhalb vonOnClose()
aufzurufen, um noch evtl. vorhandene Daten zu lesen?Ich habe dazu wiedersprüchliche Aussagen gefunden. Hier wird z.B. von Datenverlust gesprochen, wenn man innerhalb von
OnClose
keine Daten vom Socket liest: ASKLDJD: How to Handle CAsyncSocket::OnClose GracefullyMSDN sagt dazu nichts. Und hier wird explizit davon abgeraten nach einem
FD_CLOSE
Daten vom Socket zu lesen: ASM Community: recv after FD_CLOSE
-
Jo also das wurde auch in der Newsgroup alt.winsock.programming mal diskutiert und da hatten wir auch ein simples Beispiel wo man Datenverlust hatte.
Und in der MSDN stehts bei den Funktionen dabei.
WSAAsyncSelect welches von CAsyncSocket genutzt wird:
FD_CLOSE should only be posted after all data is read from a socket, but an application should check for remaining data upon receipt of FD_CLOSE to avoid any possibility of losing data.
-
Vielen Dank für die Info!