Re: Client&Server Socket "grosse Records" vers
19. Jun 2008, 11:09
- Wozu setzt du die Grösse des MemoryStreams? Die wird doch automatisch vergrößert, wenn du Daten hineinschreibst.
- Eigentlich sollte dir auffallen, das in beiden Fällen der IF Abfrage als erstes das gleiche gemacht wird.
Ich hätte es nicht ganz so "umfangreich" gemacht, sondern einfach nur einen Puffer in der Größe ReceiveLength() alloziiert, dort die Daten vom Socket reingeladen und diesen dann in den MemoryStream geschrieben.
Danach dann eine While-Schleife mit der Bedingung: while MemoryStream.Size > sizeof(Packet) do. Innerhalb der Schleife dann von vorne ein Packet ausschneiden und aus dem Stream den Teil löschen. Danach das Packet verarbeiten. Dann kommt deine Anwendung auch damit klar, wenn z.B. JumboFrames verwendet werden und du zwei Records auf einmal empfängst.
|