19. februar 2007 - 12:43Der er
11 kommentarer og 1 løsning
Socket overførelse
Jeg er ved at lave et program med Socket overførelse, hvor jeg skal kunne sende data af variabel længde. Jeg har en buffer på 256 byte, men kan i nogen tilfælde komme ud for at skulle modtage mere data end der kan være heri på én gang, hvorfor jeg ønsker at læse videre. Indtil videre har jeg forsøgt med nedenstående kode, men kan ikke rigtig få det til at virke.
Nogen forslag til forbedring?
--- kode start ---
byte[] b = new byte[256]; string line = null;
Int32 n = s.Receive(b, b.Length, 0); line += Encoding.ASCII.GetString(b, 0, n);
while (n > 0) { n = s.Receive(b, b.Length, 0); line += Encoding.ASCII.GetString(b, 0, n); }
Med akut mangel på blandt andet IT- og Tech kompetencer er det nødvendigt at gøre op med traditionel uddannelsestænkning.
Slettet bruger
19. februar 2007 - 12:52#1
Hmm, når modparten sender bliver det jo lagt i en buffer, her læser du bare 256 bytes ad gangen, så hvis der ligger mere end 256 læser du jo bare videre næste gang`?
Er som en server del, hvor en klient kan logge på, og sende data, med ovenstående kommandoer ... man kan vel egentligt godt sende først hvor meget data der kommer i alt istedet så?
Synes godt om
Slettet bruger
19. februar 2007 - 13:13#5
Altså jeg bruger nogenlunde samme system i et p2p jeg er i gang med. Der har jeg brug for at sende alle shares til server, og der laver jeg først en lang streng med alle filerne og så sender med en special karakter til sidst for at vise at her slutter det.
Når server modtager lægger den så dele af strengen i et StringBuilder objekt og kigger efter om den sidste karakter er den vi leder efter.
f.eks
?SendShares#(meget-lang-streng) + "*"
? betyder det er en command, # betyder start på argument. Så lægger den argument i StringBuilder objektet indtil den ser den sidste karakter er *
ah ja, det giver helt klart mening ... det lyder faktisk som en god idé. Så er det jo bare at holde øje med hvornår der kommer en afsluttende karakter :)
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.