Læse fra en UDP socket

Tags:    c#

Goddag

Jeg har et lille problem med at læse fra en udp socket. Problemet ligger ikke helt i at læse, men at læse nok fra udp socket'en.

Jeg har en UDP socket jeg skriver en commando til hvor jeg så skal læse alt det som kommer tilbage. Problemet ligger i at blive ved med at læse til der ikke er mere at læse, det volder mig lidt problemer. Det jeg har lige pt er en Receive på min socket en enkel gang og så får jeg ikke alt data med da en udp socket vist kun er 41xx byte stor og derfor kommer data'en i flere pakke.

Hjælp :)



4 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 4 karma
Sorter efter stemmer Sorter efter dato
Hej Thomas,

Du skal da bare stå og lytte på et received event, og så bare fylde på en buffer, når der kommer noget.
Men som Bertel skriver, så skal du jo vide hvornår en pakke er komplet.. D.v.s. enten skal du vide længden, eller have en END karakter(er).

Har du lavet din egen UDPClient eller bruger du den som er i .NET 2??

Hilsen
Søren



Indlæg senest redigeret d. 23.11.2007 08:25 af Bruger #9008
Jeg tror at du bliver nødt til at sende størrelsen på pakken først. DVS. sende 2 eller 4 bytes som fortæller modtageren hvor stor pakken er.
Så vidt jeg ved er max størrelse på udp pakker ca 1600 bytes?



Jeg har ikke noget problem i at sende og modtag noget, problemet er bare jeg modtager ikke alt fordi jeg kun læser 1 pakke fra det jeg modtager. Min teori er så at jeg sakl blive ved med at læse på min udp socket til der ikke er mere at læse og derved får jeg det hele. Jeg ved bare ikke helt hvordan jeg gør :)



Jeg kender ikke C#, men jeg går ud fra at det er det UDPer det samme som i C++.

Problemet er vel at vide hvornår den ene pakke stopper og den næste begynder?

At læse en hel pakke, når du kender størrelsen, burde ikke være det store problem; du sætter den til at læse en passende størrelse (ca. 1000 bytes) af gangen, indtil du har læst det hele. Den sidste gang du læser skal du justere størrelsen til det der passer.



t