Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Indy UDPClient antwort des Servers zu groß (https://www.delphipraxis.net/123512-indy-udpclient-antwort-des-servers-zu-gross.html)

benedikt124 3. Nov 2008 15:54


Indy UDPClient antwort des Servers zu groß
 
:cry: Hallo liebe Community,

ich möchte es schnell auf den Punkt bringen. Es soll via IdUDPClient eine Spielerliste von einem COD4 Server
geholt werden. Dies habe ich folgendermaßen gelöst:

Delphi-Quellcode:
IdUDPClient2.Host := Label6.Caption;
IdUDPClient2.Port := strtoint(Label3.Caption);
IdUDPClient2.Active := true;
IdUDPClient2.Send(pb_senden);

Servermsg := IdUDPClient2.ReceiveString(4096);
IdUDPClient2.Active := false;
Nur endet die Liste bei Spieler 9 von 42. Ich vermute mal, dass das Paket irgendwie zu groß ist.
Habe schon versucht bei ReceiveString die bytes zu vergrößern, doch ohne Erfolg.

Wie kann ich denn nun die gesammte Liste abfragen??? :cry:

P.s. ein ähnliches Thema habe ich hier gefunden: http://www.delphipraxis.net/internal...t.php?t=131520. Hat mir aber nicht weitergeholfen...

:cry: :cry:

SirTwist 3. Nov 2008 21:00

Re: Indy UDPClient antwort des Servers zu groß
 
Hi!

Im Netzwerk gibt es eine maximale Paketgröße, z.B. bei Ethernet 1508 Bytes, von denen dann noch einige Bytes für das Netzwerkprotokoll abgezogen wird (Absenderadresse, Zieladresse, Typ etc). Laut einer kleinen Google-Suche jetzt gerade ebend, werden Pakete fragmentiert (das hat nichts mit Quake zu tun), wenn man versucht über UDP Datenpakete zu verschicken, die größer sind als diese maximale Paketgröße. Solche 'fragmented packets' werden oftmals von Firewalls abgewiesen.

Sinnvoll wäre es, die Daten in 1400-Bytes-Häppchen zu verschicken.

Kann aber auch sein, dass der Fehler ganz woanders liegt.

Gruß,
SirTwist

benedikt124 4. Nov 2008 11:32

Re: Indy UDPClient antwort des Servers zu groß
 
Ja,

aber das müsste dann doch theoretisch 1 Paket sein. Also muss man ja irgendwie das 2. auch empfangen
können...

Gruß

Bene

Volle 4. Nov 2008 11:57

Re: Indy UDPClient antwort des Servers zu groß
 
ruf doch einfach

IdUDPClient2.ReceiveString

so lange auf bis es nichts mehr zurueckliefert.

[edit]
Der parameter von Receivestring gibt doch den timeout und nicht die Paketgroesse oder irre ich mich?
[/edit]

benedikt124 4. Nov 2008 12:12

Re: Indy UDPClient antwort des Servers zu groß
 
Genial,

das war die Lösung^^ Warum bin ich da nicht drauf gekommen... :oops:

Vielen vielen Dank

P.s. stimmt der Parameter ist fürs Timeout... :lol:

Volle 4. Nov 2008 12:13

Re: Indy UDPClient antwort des Servers zu groß
 
bitte.

viel spass noch damit.


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:51 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz