Halöle,
ich habe eine allgemeine Verständnisfrage.
Zuerstmal mein Vorhaben: Eigentlich bin ich schon recht gut bewachsen im Thema Netzwerkprogrammierung, soweit, das ich weiß wie ich Pakete empfangen und versenden und auf der jeweiligen Seite verarbeiten kann.
Nun zu meiner Frage: Der offizielle Game-login Server von dem Spiel Ragnarok steht (soweit ich weiß) in Kanada, was ja nicht so nah ist, bedeutet die Pakete hamm nen weiten Weg und könnten Zeitversetzt ankommen.
Nunja, eben hatte ich dieses Problem: Prinzipiell wusste ich jetzt bei dem Paket das ich erhalte das es 79 Bytes groß ist. Allerdings habe ich mit meinem C# Programm mit nem Socket drauf verbunden und dort war die Paketgröße nur 47 bytes. Wenn ich vor die Receive Funktion des Sockets nen Thread.Sleep(1000) gesetzt habe kamen die 79 bytes an. Nungut, hab ich mir kurz ne schleife gemacht die wartet bis im stream 79 bytes drinne sind hat auch supii funktioniert.
Allerdings kann die Größe des Packets doch variieren, wie kann ich es also sauber lösen das der Socket nun automatisch wartet bis wirklich nichts mehr ankommt ohne das Thread.Sleep.
Geht das irgendwie? Ich meine das Spiel wartet ja auch...
Also ich mache das so:
Socket.Receive(buffer, 0, Socket.Available);
Das Socket.Available gibt die Anzahl an bytes an die im stream vorhanden sind.
Wenn nun aber erst 47 bytes drinne sind liest er nur 47 bytes.. anstatt die 79... wie kann ich das verhindern?
Danke im Voraus.
ich habe eine allgemeine Verständnisfrage.
Zuerstmal mein Vorhaben: Eigentlich bin ich schon recht gut bewachsen im Thema Netzwerkprogrammierung, soweit, das ich weiß wie ich Pakete empfangen und versenden und auf der jeweiligen Seite verarbeiten kann.
Nun zu meiner Frage: Der offizielle Game-login Server von dem Spiel Ragnarok steht (soweit ich weiß) in Kanada, was ja nicht so nah ist, bedeutet die Pakete hamm nen weiten Weg und könnten Zeitversetzt ankommen.
Nunja, eben hatte ich dieses Problem: Prinzipiell wusste ich jetzt bei dem Paket das ich erhalte das es 79 Bytes groß ist. Allerdings habe ich mit meinem C# Programm mit nem Socket drauf verbunden und dort war die Paketgröße nur 47 bytes. Wenn ich vor die Receive Funktion des Sockets nen Thread.Sleep(1000) gesetzt habe kamen die 79 bytes an. Nungut, hab ich mir kurz ne schleife gemacht die wartet bis im stream 79 bytes drinne sind hat auch supii funktioniert.
Allerdings kann die Größe des Packets doch variieren, wie kann ich es also sauber lösen das der Socket nun automatisch wartet bis wirklich nichts mehr ankommt ohne das Thread.Sleep.
Geht das irgendwie? Ich meine das Spiel wartet ja auch...
Also ich mache das so:
Socket.Receive(buffer, 0, Socket.Available);
Das Socket.Available gibt die Anzahl an bytes an die im stream vorhanden sind.
Wenn nun aber erst 47 bytes drinne sind liest er nur 47 bytes.. anstatt die 79... wie kann ich das verhindern?
Danke im Voraus.