Der SocketAsyncEventArgs-Puffer ist voll mit Nullen

Ich schreibe eine Nachrichtenebene für mein verteiltes System. Ich verwende IOCP, dh die Socket.XXXAsync-Methoden.

Hier ist etwas ziemlich Nahes an dem, was ich tue (tatsächlich basiert meine Empfangsfunktion auf seiner):http://vadmyst.blogspot.com/2008/05/sample-code-for-tcp-server-using.html

Was ich jetzt gefunden habe, ist, dass ich zu Beginn des Programms (zwei Testserver sprechen miteinander) jedes Mal eine Reihe von SAEA-Objekten erhalte, bei denen der .Buffer vollständig mit Nullen gefüllt ist, der .BytesTransferred jedoch die Größe von hat der Puffer (1024 in meinem Fall).

Was bedeutet das? Gibt es eine spezielle Bedingung, auf die ich prüfen muss? Mein System interpretiert dies als unvollständige Nachricht und geht weiter, aber ich frage mich, ob mir tatsächlich Daten fehlen. Ich hatte den Eindruck, dass Sie keinen Rückruf erhalten würden, wenn nichts empfangen würde. Auf jeden Fall kann ich in WireShark feststellen, dass keine Pakete mit der Länge Null eingehen.

Ich habe Folgendes gefunden, als ich es gegoogelt habe, bin mir aber nicht sicher, ob mein Problem dasselbe ist:http://social.msdn.microsoft.com/Forums/en-US/ncl/thread/40fe397c-b1da-428e-a355-ee5a6b0b4d2c

http://go4answers.webhost4life.com/Example/socketasynceventargs-buffer-not-ready-121918.aspx

Antworten auf die Frage(1)

Ihre Antwort auf die Frage