![]() |
UDP-Query an einen Gameserver mit Indy UDP-Client
Servus.
Ich versuche gerade einen Query an unseren Gameserver zu senden. Funktioniert auch Prima und ich bekomme auch Daten zurück. Wenn nun aber 20 oder mehr Spieler auf dem Server sind fehlen Daten, da ich nur 2047 Bytes zurückbekomme, oder ich verfolge einen falschen Lösungsweg. Aktueller Code zur Abfrage:
Delphi-Quellcode:
Für Lösungen wäre ich dankbar.
procedure TfrmMAIN.btnQueryClick(Sender: TObject);
var Buffer: Array [0..2047] of Byte ; i, j: integer; strTemp: string; str1: string; readAgain: boolean; begin UDPClient1.Active := true; UDPClient1.BufferSize := 16384; UDPClient1.Send('\\basic\info'); UDPClient1.ReceiveBuffer( Buffer, 8192); j := 0; for i := 0 to length(Buffer) do begin str1 := Char(Buffer[i]); strTemp := strTemp + str1; end; UDPClient1.Active := false; Memo1.Lines.Text := strTemp; end; MfG, Ronny |
Re: UDP-Query an einen Gameserver mit Indy UDP-Client
Was ich schon versucht habe ist dies:
Delphi-Quellcode:
Dies brachte jedoch nicht den gewünschten erfolg.
var Buffer: Array [0..4096] of Byte ;
|
Re: UDP-Query an einen Gameserver mit Indy UDP-Client
Also das passt ja garnicht du will 8192 Byte Empfange und hast nur ein Puffer für 4096
Delphi-Quellcode:
UDPClient1.ReceiveBuffer( Buffer, 4096); ist besser oder den Puffer Erhöhen
|
Re: UDP-Query an einen Gameserver mit Indy UDP-Client
Also irgendwie bringt dies auch nicht den gewünschten Erfolg.
Ich habe jetzt folgendes geändert:
Delphi-Quellcode:
Ich bekomme 2048 Byte daten zurück und dann nur noch Salat.
var Buffer: Array [0..8192] of Byte ;
begin UDPClient1.Port := 1717; // GameQueryPort UDPClient1.Active := true; UDPClient1.BufferSize := 8192; UDPClient1.Send('\\status\\'); UDPClient1.ReceiveBuffer( Buffer, 8192); j := 0; for i := 0 to length(Buffer) do begin str1 := Char(Buffer[i]); strTemp := strTemp + str1; end; UDPClient1.Active := false; Memo1.Lines.Text := strTemp; ... end; |
Re: UDP-Query an einen Gameserver mit Indy UDP-Client
Also nach einigem Google'n habe ich nun herausgefunden das der UDPServer für jedes Paket (laut Doku) einmal den UDPRead Event auslöst.
Jedesmal liest das also 2048 Bytes an Daten. Nur tut er dies bei mir nur einmal. Wieso habe ich aber nicht herausbekommen können. Falls von euch jemand eine Idee hat wäre ich dankbar. MfG, Ronny |
Re: UDP-Query an einen Gameserver mit Indy UDP-Client
Um was für einen Server handelt es sich denn?
Was sagt dessen Doku? |
Re: UDP-Query an einen Gameserver mit Indy UDP-Client
Der Server an den ich den Befehl sende ist ein Americas Army Spieleserver.
Es kommen ja auch daten zurück aber halt nur 2048 Bytes. Ich vermute mal das ist ein Paket. Nur die lese ich die weiteren Pakete die noch kommen? UDP ist für mich halt Neuland. MFG, Ronny |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:35 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz