Entwickler-Ecke
Internet / Netzwerk - UDPQuery an Gameserver liefert nur ˙˙˙˙disconnect
benedikt124 - Do 09.10.08 17:33
Titel: UDPQuery an Gameserver liefert nur ˙˙˙˙disconnect
Hallo liebe Entwickler Ecke,
ich schreibe gerade ein kleines programm, welches erstmal nur in einer Memo die Antwort eines Gameservers anzeigen soll.
Das sieht folgendermaßen aus:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52:
| unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, IdBaseComponent, IdComponent, IdUDPBase, IdUDPClient, IdSocketHandle, StdCtrls;
type TForm1 = class(TForm) Button1: TButton; Memo1: TMemo; IdUDPClient1: TIdUDPClient; procedure Button1Click(Sender: TObject); private public end;
var Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject); var Buffer: Array [0..8192] of Byte ; i, j: integer; strTemp: string; str1: string; readAgain: boolean;
begin IdUDPClient1.Port := 28426; IdUDPClient1.Active := true; IdUDPClient1.BufferSize := 8192; IdUDPClient1.Send('\\status\\'); IdUDPClient1.ReceiveBuffer( Buffer, 8192); j := 0; for i := 0 to length(Buffer) do begin str1 := Char(Buffer[i]); strTemp := strTemp + str1; end; IdUDPClient1.Active := false; Memo1.Lines.Text := strTemp;
end; |
Nun wenn ich den Query "status" an den Server sende, bekomme ich nur "˙˙˙˙disconnectwlPwlÄ" zurück.
Was hat das zu bedeuten? Warum?
Danke schonmal im Voraus
Moderiert von
AXMD: Code- durch Delphi-Tags ersetzt
LexXis - Do 09.10.08 17:49
Was sagt denn das Protokol das der Server benutzt dazu? Das sollte ja irgendwo zu finden sein, immerhin weißt du ja schon was für eine Anforderung du an selbigen schicken musst.
Um was für ein Game handelt es sich denn?
mfg
benedikt124 - Do 09.10.08 17:55
Hallo,
es handelt sich um Call of Duty 4. Das Protokoll des Servers ist aus...
Ich kann dir nur sagen was in der Gameserver Konsole steht und da steht gar nix ;(
LexXis - Do 09.10.08 18:16
So, nach 10 mins googlen:
Das Protokol hab ich auch die schnelle nicht aufgetrieben, allerdings ein
PHP-Script [
http://www.williamlang.net/page.php?al=cod4seditio], dass deine gewünschten Daten ausliest.
Wenn du dich ein bischen bemühst, kannst du das sicher in Delphi übersetzen :)
mfg
benedikt124 - Do 09.10.08 18:32
Okey,
ich hab mir das PHP-Script angeschaut. Im Prinzip habe ich das ja schon soweit bis zum senden des Querys.
Der einzige unterschied ist, dass in PHP dashier gesendet wird: xFF\xFF\xFF\xFFgetstatus\x00.
Das ergibt jedoch dass selbe resultat: ˙˙˙˙disconnectw
LexXis - Do 09.10.08 18:59
benedikt124 hat folgendes geschrieben : |
| xFF\xFF\xFF\xFFgetstatus\x00 |
Du hast das nicht als String verschickt, oder? o_O
Falls ja: Falsch! ;)
Das Delphi-Äquivalent dazu wäre
Delphi-Quelltext
1: 2: 3: 4:
| var senden: String;
senden := $FF$FF$FF$FF+'getstatus'+$00; |
benedikt124 - Do 09.10.08 19:14
Ähm,
ich habe das jetzt mal so eingefügt:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25:
| procedure TForm1.Button1Click(Sender: TObject); var Buffer: Array [0..8192] of Byte ; i, j: integer; strTemp: string; str1: string; readAgain: boolean; senden: String;
begin senden := $FF$FF$FF$FF+'getstatus'+$00; IdUDPClient1.Port := 28426; IdUDPClient1.Active := true; IdUDPClient1.BufferSize := 8192; IdUDPClient1.Send(senden); IdUDPClient1.ReceiveBuffer( Buffer, 8192); j := 0; for i := 0 to length(Buffer) do begin str1 := Char(Buffer[i]); strTemp := strTemp + str1; end; IdUDPClient1.Active := false; Memo1.Lines.Text := strTemp;
end; |
Ist das so korrekt? Falls ja geht es nämlich nicht: Fehler: Operator oder Semikolon fehlt ...
Moderiert von
AXMD: Code- durch Delphi-Tags ersetzt
Nico72 - Do 09.10.08 20:03
Hallo,
$FF ist ja auch Integer. Mach mal überall ein # davor, also #$FF#$FF#$FF... Und hinten natürlich #$00 (oder #00).
benedikt124 - Do 09.10.08 20:08
Cool es geht alles klar vielen Dank Nico und Lexxis
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!