![]() |
Mit Gameserver via UDP kommunizieren
Hallo miteinander.
Ich habe kürzlich beschlossen ein Programm zu schreiben, welches mir erlaubt auf meinen Gameserver zuzugreifen und diesen zu administrieren. Ich selbst, bin in Delphi nicht sehr bewandert, wollte also dadurch meine Kenntnisse erweitern. Jedoch stellt sich folgendes Problem in den Weg: Wie kann ich von dem Server Daten kriegen? Ich habe mir vorgestellt, dass sich das über UDP lösen lässt, also hab ich mir die Indy-Komponente installiert und mich daran versucht. Wie kann ich aber die Befehle an den Server schicken? über Send() ? [die IdUDPClient-Komponente] Hab ich einen Denkfehler? Könnt ihr mir helfen? Vielen Dank. |
Re: Mit Gameserver via UDP kommunizieren
Hi,
um was für einen Gameserver handelt es sich? |
Re: Mit Gameserver via UDP kommunizieren
Es handelt sich um einen
![]() Man kann aber auch generell meine beiden Fragen beantworten ;) Um den Server administrieren zu können, öffnet man im Spiel die Konsole, loggt sich mit cl_adminpassword blah ein, und kann mittels svcmd <befehl> die Befehle ausführen. Ich möchte nun wissen, wie ich in die "Konsole" komme, bzw. den Rückgabewert von allen Werten kriegen kann. |
Re: Mit Gameserver via UDP kommunizieren
Hi,
als erstes solltest Du versuchen ein SDK herzubekommen bzw. eine Definition des Protokolls. Danach müsstest Du das 1 zu 1 nach Delphi portieren, danach per UDP.Send (imho) die Kommandos senden. |
Re: Mit Gameserver via UDP kommunizieren
Und wie kann ich die Pakete dann empfangen?
Tut mir Leid, bin wie gesagt nicht so sehr mit Delphi bewandert, vor allem nicht mit Internetprogrammierung |
Re: Mit Gameserver via UDP kommunizieren
Hi,
der Server schickt dann eine Antwort an Dich zurück und diese Antwort musst du auswerten. |
Re: Mit Gameserver via UDP kommunizieren
Ein Beispiel wäre nett :-/
Ich weiss zum Beispiel nicht, ob ich dieses Send() einer Variable zuweisen soll und wenn ja, welchem Typ? Ich hab zum Beispiel bis jetzt folgendes:
Delphi-Quellcode:
Eigenartiger Weise zeigt das Programm immer an, dass das einloggen "sucessful" war, was wahrscheinlich daran liegt, dass ich kein Paket auswerte, da ich das nicht kann :(
function TForm1.admin_login(pass, host:string; port:integer): boolean;
begin try UDP.Send(Host, Port, 'cl_adminpassword '+pass); result := true; except result := false; exit; end; end; PS: Das "successful" erscheint, wenn result := true :P |
Re: Mit Gameserver via UDP kommunizieren
Wenn du im Spielclient'cladminpassword' eingibst, heisst das nicht, dass dass so 1:1 an den Server gschickt wird. Du musst dir also entweder ein SDK des Spiels/Protokols besorgen oder den Programmierer nett fragen, ob er dir eine Protokollspezifikation gibt.
|
Re: Mit Gameserver via UDP kommunizieren
Hi,
so einfach wird das nicht gehen *g*. Wie inherited schon sagte, wirst Du die Protokolspezifikation benötigen, sonst wird das nicht klappen. [edit] Schon wieder zufrüh abgesendet *hrmpf* Ich könnte dir höchstens ein Beispiel bei einem CS:Source Server zeigen, wie die das dort machen, sofern intresse besteht. [/edit] |
Re: Mit Gameserver via UDP kommunizieren
Ja, natürlich besteht Interesse :)
Oder einfach nur ein einfaches Beispiel, wie man ein Paket von dem Server zugesendet bekommt und diesen auswerten kann. Danke |
Re: Mit Gameserver via UDP kommunizieren
Hi,
das Problem ist, dass jeder Server die Daten anders empfängt und auch wieder anders zurücksendet. Will heißen: Ohne Protokollspezifikation kommst Du nicht weiter, außer Du snifft den Datenverkehr aus und schaffst es selbst die Protokollspezifikation zusammenzumpfriemeln. Du kannst ja mal den Support anschreiben (oder direkt einen Programmierer) und nachfragen, ob die die Spezifikation rausrücken. Danach können wir weiter diskutieren. |
Re: Mit Gameserver via UDP kommunizieren
So, mir wurde gesagt dass ich das ganze über TCP machen sollte.
Zitat:
password das admin passwort command der Befehl um die Daten zu kriegen Welche Prozedur benutze ich jetzt (indy) |
Re: Mit Gameserver via UDP kommunizieren
Write.
|
Re: Mit Gameserver via UDP kommunizieren
So eine Prozedur habe ich aber gar nicht :S
Prozeduren, die mit Write anfangen sind nur WriteHeader und WriteRFCStrings :-/ |
Re: Mit Gameserver via UDP kommunizieren
whä? Welche Komponente benutzt du?
|
Re: Mit Gameserver via UDP kommunizieren
Wie schon gesagt, indy
|
Re: Mit Gameserver via UDP kommunizieren
Indy.Sockets ist die Komponentensammlung... Welche Komponente der Indy-Komponentensammlung benutzt du?
|
Re: Mit Gameserver via UDP kommunizieren
... und welche version?
|
Re: Mit Gameserver via UDP kommunizieren
Ich benutze die IdTCPClient Komponente von der Indy Version 10.1.5
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:49 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