Hallo Forum,
ich bin neu und brauche dringend Hilfe.
Habe einen TCPListener der auf eingehende Daten wartet. Das funktioniert auch einwandfrei, wenn die Daten die ich erwarte nicht mehr als 1460 Bytes haben. Wenn mehr erwartet wird dann kommen die Daten Segmentiert.
Also die Daten können nicht mit einem ... netStream.Read( bytes , 0 , bytes.lenght) ... gelesen werden.
Darum mache ich folgendes:
do
....
intReceived =netStream.Read(bytes, 0 , bytes.length)
intEmpfangen + = intReceived
.....
loop while ( inEtmpfangen < intErwartet)
Was passiert: Die ersten 1460 Bytes kommen sehr schnell , dann dauert es etwa 200 ms und der Rest ist da . Da können dann auch 10k oder mehr sein.
Woran könnte das liegen? Auf den Sender habe ich keinen Einfluss.
Das blokieren von ca 200ms is einfach viel zu lange. Liegt das an der netstream.Read Implementierung?
Sollte ich prinzipiell anders vorgehen. Viellleicht den nach jeden Päckchen den Client schliessen und wieder neu auf Anfrage warten.
Gruß
Otto
ich bin neu und brauche dringend Hilfe.
Habe einen TCPListener der auf eingehende Daten wartet. Das funktioniert auch einwandfrei, wenn die Daten die ich erwarte nicht mehr als 1460 Bytes haben. Wenn mehr erwartet wird dann kommen die Daten Segmentiert.
Also die Daten können nicht mit einem ... netStream.Read( bytes , 0 , bytes.lenght) ... gelesen werden.
Darum mache ich folgendes:
do
....
intReceived =netStream.Read(bytes, 0 , bytes.length)
intEmpfangen + = intReceived
.....
loop while ( inEtmpfangen < intErwartet)
Was passiert: Die ersten 1460 Bytes kommen sehr schnell , dann dauert es etwa 200 ms und der Rest ist da . Da können dann auch 10k oder mehr sein.
Woran könnte das liegen? Auf den Sender habe ich keinen Einfluss.
Das blokieren von ca 200ms is einfach viel zu lange. Liegt das an der netstream.Read Implementierung?
Sollte ich prinzipiell anders vorgehen. Viellleicht den nach jeden Päckchen den Client schliessen und wieder neu auf Anfrage warten.
Gruß
Otto