Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Mit Gameserver via UDP kommunizieren (https://www.delphipraxis.net/83981-mit-gameserver-via-udp-kommunizieren.html)

No0oB 9. Jan 2007 18:33


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.

Die Muhkuh 9. Jan 2007 18:36

Re: Mit Gameserver via UDP kommunizieren
 
Hi,

um was für einen Gameserver handelt es sich?

No0oB 9. Jan 2007 18:44

Re: Mit Gameserver via UDP kommunizieren
 
Es handelt sich um einen Savage Server.
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.

Die Muhkuh 9. Jan 2007 18:51

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.

No0oB 9. Jan 2007 18:55

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

Die Muhkuh 9. Jan 2007 18:58

Re: Mit Gameserver via UDP kommunizieren
 
Hi,

der Server schickt dann eine Antwort an Dich zurück und diese Antwort musst du auswerten.

No0oB 9. Jan 2007 19:12

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:
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;
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 :(
PS: Das "successful" erscheint, wenn result := true :P

inherited 9. Jan 2007 22:12

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.

Die Muhkuh 10. Jan 2007 13:38

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]

No0oB 10. Jan 2007 16:46

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

Die Muhkuh 10. Jan 2007 17:02

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.

No0oB 17. Jan 2007 14:38

Re: Mit Gameserver via UDP kommunizieren
 
So, mir wurde gesagt dass ich das ganze über TCP machen sollte.
Zitat:

svcmd [10 spaces] password command
svcmd wär das einleitewort für remote admin
password das admin passwort
command der Befehl um die Daten zu kriegen

Welche Prozedur benutze ich jetzt (indy)

inherited 17. Jan 2007 14:54

Re: Mit Gameserver via UDP kommunizieren
 
Write.

No0oB 17. Jan 2007 15:32

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
:-/

inherited 17. Jan 2007 15:39

Re: Mit Gameserver via UDP kommunizieren
 
whä? Welche Komponente benutzt du?

No0oB 17. Jan 2007 15:53

Re: Mit Gameserver via UDP kommunizieren
 
Wie schon gesagt, indy

inherited 17. Jan 2007 16:25

Re: Mit Gameserver via UDP kommunizieren
 
Indy.Sockets ist die Komponentensammlung... Welche Komponente der Indy-Komponentensammlung benutzt du?

DGL-luke 17. Jan 2007 16:26

Re: Mit Gameserver via UDP kommunizieren
 
... und welche version?

No0oB 17. Jan 2007 17:00

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