Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   ARK (Survival Evolved) RCON Client Delphi (https://www.delphipraxis.net/202247-ark-survival-evolved-rcon-client-delphi.html)

ArkTuber 12. Okt 2019 22:06

ARK (Survival Evolved) RCON Client Delphi
 
Hallo
ich versuche seid tagen herauszufinden wie ich einen RCON Client in Delphi Schreibe der bestimmte Befehle zu meinen ARK Game Servern senden kann... Ich bin noch recht neu (in Delphi)
Ich habe bereits alles versucht was ich im Internet gefunden habe aber nichts hat Funktioniert... vlt kann mir hier jemand helfen ? Ich brauche lediglich die Connection zum Server... den Rest kann ich ohne Probleme dann schreiben...

PS. Die Verbindung muss über TCP aufgebaut werden und Ich nutze Delphi 10.3 Community Edition.


Danke im voraus an alle die mir eventuell Helfen können :-D

Redeemer 13. Okt 2019 12:23

AW: ARK (Survival Evolved) RCON Client Delphi
 
Zitat:

Zitat von ArkTuber (Beitrag 1449535)
Hallo
ich versuche seid tagen herauszufinden wie ich einen RCON Client in Delphi Schreibe der bestimmte Befehle zu meinen ARK Game Servern senden kann... Ich bin noch recht neu (in Delphi)

Klassisches Erstlingsprojekt.

Zitat:

Zitat von ArkTuber (Beitrag 1449535)
Ich habe bereits alles versucht was ich im Internet gefunden habe aber nichts hat Funktioniert... vlt kann mir hier jemand helfen ? Ich brauche lediglich die Connection zum Server... den Rest kann ich ohne Probleme dann schreiben...

Es scheitert also daran, die einzige vorinstallierte Komponente mit TCPClient im Namen auf die Form zu klatschen und Connect aufzurufen (das ist die Antwort auf deine Frage), aber nicht an einem flüssig funktionierenden Datenaustausch (also mit Threads), die richtigen Daten im richtigen Encoding zu schicken und empfangene Daten zu verarbeiten?

ArkTuber 13. Okt 2019 12:32

AW: ARK (Survival Evolved) RCON Client Delphi
 
Das Problem ist das ich ein sogeganntes AUTH_Packet senden muss um überhaupt via RCON eine Verbindung herstellen zu können... Leider habe ich noch nicht das wissen um das was unter dem Link zu sehen ist umzusetzten...
https://developer.valvesoftware.com/..._RCON_Protocol

TurboMagic 13. Okt 2019 13:39

AW: ARK (Survival Evolved) RCON Client Delphi
 
Naja, du musst deine Daten als TBytes mäßiges Array versenden.
Dazu müssen diese wie unter Basic Packet Structure in deiner URL angegeben
codiert werden. Also Size 4 Byte, ID und Type ebenfalls. Der String
ist als ASCII-String immer 1 Byte pro Zeichen codiert.

Mal eine andere Frage: welche Programmiervorkenntnisse hast du bisher?

ArkTuber 13. Okt 2019 13:44

AW: ARK (Survival Evolved) RCON Client Delphi
 
Habe mich vorher nur mit Batch beschäftigt und da einige größere programme gebastelt^^ mit C++ kenne ich mich auch ein wenig aus aber die Sprache war mir zu schwer. Delphi habe ich vor einer weile angefangen da ein Freund auch mit Delphi Arbeitet und ich dann auf den geschmack gekommen bin^^

Wenn ich es erst einmal habe (Den Code den ich brauche) dann werde ich auch verstehen wie es Funktioniert und kann es so dann in Zukunft selber schreiben...

ArkTuber 13. Okt 2019 17:37

AW: ARK (Survival Evolved) RCON Client Delphi
 
Zitat:

Zitat von TurboMagic (Beitrag 1449547)
Naja, du musst deine Daten als TBytes mäßiges Array versenden.
Dazu müssen diese wie unter Basic Packet Structure in deiner URL angegeben
codiert werden. Also Size 4 Byte, ID und Type ebenfalls. Der String
ist als ASCII-String immer 1 Byte pro Zeichen codiert.


Mal eine andere Frage: welche Programmiervorkenntnisse hast du bisher?

Ich verstehe davon kaum etwas... Sorry dafür habe ich noch zu wenig erfahrung... Könntest du mir evtl ein Beispiel oder auch den Quell Code dafür schreiben ? Wenn ich den Code habe dann werde ich es auch verstehen :)

p80286 13. Okt 2019 19:21

AW: ARK (Survival Evolved) RCON Client Delphi
 
Zitat:

Basic Packet Structure

Both requests and responses are sent as TCP packets. Their payload follows the following basic structure:
Field Type Value
Size 32-bit little-endian Signed Integer Varies, see below.
ID 32-bit little-endian Signed Integer Varies, see below.
Type 32-bit little-endian Signed Integer Varies, see below.
Body Null-terminated ASCII String Varies, see below.
Empty String Null-terminated ASCII String 0x00
Packet Size

The packet size field is a 32-bit little endian integer, representing the length of the request in bytes. Note that the packet size field itself is not included when determining the size of the packet, so the value of this field is always 4 less than the packet's actual length. The minimum possible value for packet size is 10:
Size Containing
4 Bytes ID Field
4 Bytes Type Field
At least 1 Byte Packet body (potentially empty)
1 Bytes Empty string terminator

Since the only one of these values that can change in length is the body, an easy way to calculate the size of a packet is to find the byte-length of the packet body, then add 10 to it.

The maximum possible value of packet size is 4096. If the response is too large to fit into one packet, it will be split and sent as multiple packets. See "Multiple-packet Responses" below for more information on how to determine when a packet is split.
Sei doch bitte einmal so nett und beschreibe was Du daran nicht verstehst.

Gruß
K-H

ArkTuber 13. Okt 2019 19:23

AW: ARK (Survival Evolved) RCON Client Delphi
 
Ich weiß nicht wie ich das umsetzten soll... Ich habe zu wenig erfahrung in dem gebiet und weiß leider überhaupt nicht wie ich so etwas sende bzw wie der Quell Code dafür aussieht... Ich bin wie gesagt noch neu in der Programmierung ich habe mir schon einiges selber beigebracht aber sowas habe ich noch nie gemacht...

p80286 13. Okt 2019 20:54

AW: ARK (Survival Evolved) RCON Client Delphi
 
Also was ein Array oder ein Record ist weißt Du?

Gruß
K-H

ArkTuber 13. Okt 2019 20:56

AW: ARK (Survival Evolved) RCON Client Delphi
 
Vom namen her schon aber das wars auch schon :|

Neutral General 13. Okt 2019 21:00

AW: ARK (Survival Evolved) RCON Client Delphi
 
Dann solltest du erst mal die Grundlagen lernen.. Das wird so nix.

ArkTuber 13. Okt 2019 21:04

AW: ARK (Survival Evolved) RCON Client Delphi
 
Aus diesem Grund hatte ich ja gefragt ob mir einer das Schreiben kann... Ich habe mit Batch, C++ und mit der Unreal Engine gearbeitet alles was ich davon kann habe ich durch Source Codes gerlernt...

Aviator 13. Okt 2019 21:48

AW: ARK (Survival Evolved) RCON Client Delphi
 
So gerne die Delphi Praxis Community auch hilft, aber die Grundkenntnisse solltest du dir schon einmal aneignen. Wir können dir hier alles mögliche schreiben von dem du dann allerdings recht wenig verstehst.

Zudem haben wohl alle hier angemeldeten auch einen Real Life Job als Programmierer oder auch etwas anderes. Niemand hat die Zeit, zumindest gehe ich davon aus, dir so eine Software die sofort funktioniert wie du dir das vorstellst einfach mal so zu schreiben. Zumal auch relativ wenige einen Server hätte gegen den sie das testen können.

Schau dir erst einmal ein paar Language Basics an. Dann versuche, die Typen, Record, Arrays, ... einmal aufzubauen und poste deinen Versuch hier. Wir schauen dann drüber und können dir sagen was nicht richtig ist. Nur so lernst du auch was du evtl. falsch machst (aus deinen eigenen Fehlern).

Also ran an die Tutorial. :thumb:

ArkTuber 13. Okt 2019 22:05

AW: ARK (Survival Evolved) RCON Client Delphi
 
Theoretisch benötige ich nur den send Befehl also wie es aussehen muss bzw wie ich die verbindung hinbekomme... Host und Port sind bereits eingetragen ich weiß halt lediglich nicht wie die Zeile/Zeilen für das senden von Befehlen aussehen müssen...

Moombas 14. Okt 2019 08:26

AW: ARK (Survival Evolved) RCON Client Delphi
 
Dann schmeiß doch mal hier ins Forum was du bisher hast, evtl. kann dann jemand sehen an welcher Stelle es genau hakt und kann dir weiter helfen.
Oder du fragst mal jene, die schon Erfahrung mit solchen Befehlen haben: https://arksurvivalevolved.zone/thre...nrichten-tool/
Dann musst du das "nur" für Delphi umsetzen, da du ja schreibst "benötige ich nur den send Befehl also wie es aussehen muss bzw wie ich die verbindung hinbekomme"

Sinspin 14. Okt 2019 08:30

AW: ARK (Survival Evolved) RCON Client Delphi
 
Wie Send aufgerufen wird ist sicher in einem kurzen Beispiel in der Hilfe beschrieben. Wie ein Paket auszusehen hat steht oben.
Und wenn du schonmal C++ verwendet hast sagt dir record und array auch was.
Zeig mal was für Code du bisher hast, dann sehen wir weiter.

Wie du siehst sind wir nicht schreibfaul, sondern lediglich nicht bereit dich um deinen Lernerfolg zu bringen.

ArkTuber 14. Okt 2019 12:34

AW: ARK (Survival Evolved) RCON Client Delphi
 
Delphi-Quellcode:
unit Unit4;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, IdBaseComponent,
  IdComponent, IdTCPConnection, IdTCPClient, Vcl.ExtCtrls;

type
  TForm4 = class(TForm)
    IdTCPClient1: TIdTCPClient;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
    procedure IdTCPClient1Connected(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form4: TForm4;

implementation

{$R *.dfm}

procedure TForm4.Button1Click(Sender: TObject);
begin
  IdTCPClient1.Connect;
end;

procedure TForm4.IdTCPClient1Connected(Sender: TObject);
begin
showmessage('Connected');
IdTcpClient1.IOHandler.Writeln('say Test');
end;

end.
Das habe ich bisher... wie ich bereits sagte verstehe ich nicht wie der befehl gesendet werden muss... Ich habe bereits alles was ich gefunden habe durchprobiert aber nichts Funktioniert. Ich vermute mal das mein Code nun der richtige Ansatz sein müsste (IP und Port sind fest in der Komponente hinterlegt)

Neutral General 14. Okt 2019 13:50

AW: ARK (Survival Evolved) RCON Client Delphi
 
Zitat:

Zitat von p80286 (Beitrag 1449565)
Zitat:

Basic Packet Structure

Both requests and responses are sent as TCP packets. Their payload follows the following basic structure:
Field Type Value
Size 32-bit little-endian Signed Integer Varies, see below.
ID 32-bit little-endian Signed Integer Varies, see below.
Type 32-bit little-endian Signed Integer Varies, see below.
Body Null-terminated ASCII String Varies, see below.
Empty String Null-terminated ASCII String 0x00
Packet Size

The packet size field is a 32-bit little endian integer, representing the length of the request in bytes. Note that the packet size field itself is not included when determining the size of the packet, so the value of this field is always 4 less than the packet's actual length. The minimum possible value for packet size is 10:
Size Containing
4 Bytes ID Field
4 Bytes Type Field
At least 1 Byte Packet body (potentially empty)
1 Bytes Empty string terminator

Since the only one of these values that can change in length is the body, an easy way to calculate the size of a packet is to find the byte-length of the packet body, then add 10 to it.

The maximum possible value of packet size is 4096. If the response is too large to fit into one packet, it will be split and sent as multiple packets. See "Multiple-packet Responses" below for more information on how to determine when a packet is split.
Sei doch bitte einmal so nett und beschreibe was Du daran nicht verstehst.

Gruß
K-H

Lies dir das nochmal durch. Oder im Idealfall sogar das auf der Webseite selbst.
Nur einen String zu schicken reicht nicht.

ArkTuber 14. Okt 2019 13:53

AW: ARK (Survival Evolved) RCON Client Delphi
 
Zitat:

Zitat von Neutral General (Beitrag 1449592)
Zitat:

Zitat von p80286 (Beitrag 1449565)
Zitat:

Basic Packet Structure

Both requests and responses are sent as TCP packets. Their payload follows the following basic structure:
Field Type Value
Size 32-bit little-endian Signed Integer Varies, see below.
ID 32-bit little-endian Signed Integer Varies, see below.
Type 32-bit little-endian Signed Integer Varies, see below.
Body Null-terminated ASCII String Varies, see below.
Empty String Null-terminated ASCII String 0x00
Packet Size

The packet size field is a 32-bit little endian integer, representing the length of the request in bytes. Note that the packet size field itself is not included when determining the size of the packet, so the value of this field is always 4 less than the packet's actual length. The minimum possible value for packet size is 10:
Size Containing
4 Bytes ID Field
4 Bytes Type Field
At least 1 Byte Packet body (potentially empty)
1 Bytes Empty string terminator

Since the only one of these values that can change in length is the body, an easy way to calculate the size of a packet is to find the byte-length of the packet body, then add 10 to it.

The maximum possible value of packet size is 4096. If the response is too large to fit into one packet, it will be split and sent as multiple packets. See "Multiple-packet Responses" below for more information on how to determine when a packet is split.
Sei doch bitte einmal so nett und beschreibe was Du daran nicht verstehst.

Gruß
K-H

Lies dir das nochmal durch. Oder im Idealfall sogar das auf der Webseite selbst.
Nur einen String zu schicken reicht nicht.

Ich habe es mir schon bestimmt 100 mal Durchgelesen^^ Nur weiß ich nicht wie ich das umsetzen soll bzw kann...

Uwe Raabe 14. Okt 2019 17:01

AW: ARK (Survival Evolved) RCON Client Delphi
 
Zitat:

Zitat von ArkTuber (Beitrag 1449594)
Ich habe es mir schon bestimmt 100 mal Durchgelesen^^ Nur weiß ich nicht wie ich das umsetzen soll bzw kann...

Womit wir wieder bei Post #11 wären.

Sinspin 15. Okt 2019 11:54

AW: ARK (Survival Evolved) RCON Client Delphi
 
Uwe, Grundlagen. Grund-Lagen! Aber wir drehen uns damit im Kreis. Das hilft keinem.

Record : Definition einer Gruppe zusammengehöriger Daten unterschiedlichen Typs in einer Datenstuktur. Mittlerweile auf Speed und nicht mehr auf Größe optmiert. Aber, dazu bei Bedarf später mehr.
Array : Definition einer Gruppe zusammengehöriger Daten gleichen Typs.
Es eignen sich beide Strukturen zum speichern von Daten oder übertragen als stream.

Ark, deine Aufgabe ist nun einen Record zu definieren der die Daten aufnehmen kann und diesen zu befüllen. Probier es einfach mal so wie du es machen würdest.
Und, das gleiche nochmal mit einem Array.

Neutral General 15. Okt 2019 14:35

AW: ARK (Survival Evolved) RCON Client Delphi
 
Zitat:

Zitat von Sinspin (Beitrag 1449661)
Uwe, Grundlagen. Grund-Lagen! Aber wir drehen uns damit im Kreis. Das hilft keinem.

Record : Definition einer Gruppe zusammengehöriger Daten unterschiedlichen Typs in einer Datenstuktur. Mittlerweile auf Speed und nicht mehr auf Größe optmiert. Aber, dazu bei Bedarf später mehr.
Array : Definition einer Gruppe zusammengehöriger Daten gleichen Typs.
Es eignen sich beide Strukturen zum speichern von Daten oder übertragen als stream.

Ark, deine Aufgabe ist nun einen Record zu definieren der die Daten aufnehmen kann und diesen zu befüllen. Probier es einfach mal so wie du es machen würdest.
Und, das gleiche nochmal mit einem Array.

Ich meine das ist ja ganz nett, dass du ihm erklärst was ein Record und was ein Array ist. Aber ich glaube kaum dass er mit dem Wissen jetzt wirklich was anfangen kann.
Letztendlich muss er sich dann eben doch ein Tutorial o.ä. anschauen wo tatsächlich Beispielcode enthalten ist wo man sieht wie man Records und Arrays benutzt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:54 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