[Sockets] Daten per Schleife lesen - alle!

Klein0r

Erfahrenes Mitglied
Hallo zusammen,

ich bin gerade dabei eine Client/Server-Applikation zu schreiben. Dabei verteile der Server Daten an Clients (Sockets).

Nun zu meiner Problemschilderung:
Ich lese mit socket.receive(buffer) per schleife daten in einen Buffer (Byte Array). Diese Daten werden in ein zweites Array umgelagert oder angehängt (je nach Durchlauf). Falls der Buffer komplett voll ist, wird receive nochmal ausgeführt und die gelesenen Daten aneghängt.

Nun zu dem eigentlichen Problem:
Die Schleife ist anscheinend schneller als der Socket Daten empfangen kann. Das heißt, dass er aus der Schleife rausspringt (da der Puffert noch nicht wieder voll war.

Sobald ich ein sleep von 10ms oder eine Konsolenausgabe in der Schleife mache, werden anscheinend genügend Daten für einen weiteren Durchlauf im Socket bereitgestellt. Das halte ich allerdings für eine weniger gute Lösung. Wie kann ich also feststellen ob noch Daten kommen?

Ein weiteres Problem stellt sich dar, indem es durchaus passieren könnte, dass so viele Daten vorliegen, dass der Puffer genau voll ist - dann würde die Schleife auch erneut ausgeführt aber es kämen keine weiteren Daten (erstmal).

Wer kennt eine Lösung?!

lg
 
Niemand eine Idee?

Ich bin in der Sache immernoch nicht weiter gekommen!
Woran könnte das denn bitte liegen?

Mittlerweile bin ich auf die Idee gekommen, dass es an den Puffergrößen liegen könnte.
Wie sollten diese Buffer idealer Weise festgelegt werden

lg
 
Zurück