AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TCP Verbindug und RCON

Ein Thema von SyntaxXx · begonnen am 8. Jul 2013 · letzter Beitrag vom 22. Jul 2013
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von sx2008
sx2008

Registriert seit: 16. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#11

AW: TCP Verbindug und RCON

  Alt 15. Jul 2013, 14:59
Also irgenwie lässt du dich bluffen; die Variable bytes:TIdBytes ist ein Zeiger, der 4 Bytes benötigt.
Es zeigt aber auf einen Speicherbereich der die Länge hat, die man zuvor mit SetLength reserviert hat.
SizeOf() und Length() geben unterschiedliche Ergebnisse zurück!

Bevor du die Daten wegschickst wäre es sinnvoll sie in einer Datei zu speichern, die du dann mit einem Debugger anschauen kannst.
Delphi-Quellcode:
var
  bytes : TIdBytes;
  rconpacket : TRconPacket;
  fs : TFileStream;
begin
  ...
  SetLength(bytes, rconpacket.Size);
  Move(rconpacket, bytes[0], rconpacket.Size);

  // zum Debuggen die Daten in Datei schreiben
  fs := TFileStream.Create('RCON_Out.dat', fmCreate);
  fs.Writebuffer(bytes[0], Length(bytes));
  fs.Free;

  idTCPClient1.IOHandler.Write(bytes);
fork me on Github
  Mit Zitat antworten Zitat
SyntaxXx

Registriert seit: 14. Dez 2008
328 Beiträge
 
Delphi XE4 Architect
 
#12

AW: TCP Verbindug und RCON

  Alt 20. Jul 2013, 09:16
Ich habe alles nochmal geprüft, aber es geht immer noch nicht.
Mit Wiraschark habe ich mal den Traffik mit geschnitten.

Dieser sieht so aus:
Code:
00000000  10 00 00 00 00 00 00 00  03 00 00 00 38 35 32 32 ........ ....1234
00000010  33 31 1e 00 00 00 00 00  00 00 00 00 00 00 00 00 56...... ........
00000020  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
00000030  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
00000040  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
00000050  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
00000060  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
00000070  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
00000080  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
00000090  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
000000A0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
000000B0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
000000C0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
000000D0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
000000E0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
000000F0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
00000100  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
00000110  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
00000120  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
00000130  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
00000140  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
00000150  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
00000160  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
00000170  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
00000180  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
00000190  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
000001A0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
000001B0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
000001C0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
000001D0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
000001E0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
000001F0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
00000200  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
00000210  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
00000220  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
00000230  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
00000240  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
00000250  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
00000260  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
00000270  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
00000280  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
00000290  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
000002A0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
000002B0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
000002C0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
000002D0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
000002E0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
000002F0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
00000300  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
00000310  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
00000320  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
00000330  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
00000340  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
00000350  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
00000360  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
00000370  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
00000380  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
00000390  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
000003A0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
000003B0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
000003C0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
000003D0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
000003E0  00 00 00 00 00 00 00 00  00                      ........ .
    00000000  0a 00 00 00 00 00 00 00  00 00 00 00 00 00       ........ ......
    0000000E 0a 00 00 00 ff ff ff ff 02 00 00 00 00 00       ........ ......
000003E9  10 00 00 00 00 00 00 00  02 00 00 00 73 74 61 74 ........ ....stat
000003F9  75 73 1e 00 00 00 00 00  00 00 00 00 00 00 00 00 us...... ........
00000409  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
00000419  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
00000429  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
00000439  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
00000449  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
00000459  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
00000469  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
00000479  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
00000489  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
00000499  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
000004A9  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
000004B9  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
000004C9  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
000004D9  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
000004E9  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
000004F9  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
00000509  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
00000519  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
00000529  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
00000539  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
00000549  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
00000559  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
00000569  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
00000579  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
00000589  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
00000599  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
000005A9  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
000005B9  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
000005C9  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
000005D9  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
000005E9  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
000005F9  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
00000609  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
00000619  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
00000629  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
00000639  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
00000649  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
00000659  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
00000669  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
00000679  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
00000689  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
00000699  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
000006A9  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
000006B9  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
000006C9  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
000006D9  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
000006E9  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
000006F9  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
00000709  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
00000719  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
00000729  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
00000739  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
00000749  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
00000759  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
00000769  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
00000779  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
00000789  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
00000799  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
000007A9  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
000007B9  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00 ........ ........
000007C9  00 00 00 00 00 00 00 00  00                      ........ .
Wie man sehen kann, wird erst das PW "123456" gesendet.
Der HEX Code stimmt hier nicht überein, da ich das PW oben abgeändert habe.

Daraufhin erhalte ich wie auch von Steam vorgegeben 2 x 14 Bytes zurück.
Danach sende ich dassn den Befehl "status", woruf ich eigentlich ja dann den Statusbericht erhalten sollte.
Doch auf diesen Befehl antwortet der Server einfach nicht.
  Mit Zitat antworten Zitat
Benutzerbild von Valle
Valle

Registriert seit: 26. Dez 2005
Ort: Karlsruhe
1.223 Beiträge
 
#13

AW: TCP Verbindug und RCON

  Alt 20. Jul 2013, 16:01
Hi,

ich habe mit RCON und Delphi eigentlich nichts zutun...

... aber ein Blick in die Doku zeigt, dass es ein "Size" Feld gibt. Das solltest du auch nutzen. Sende doch nicht noch tausende Nullen mit, wenn es doch ein Feld gibt, welches anzeigt wie lang das Paket sein soll. Das könnte vielleicht auch erklären warum es nicht geht.

Liebe Grüße,
Valentin
Valentin Voigt
BOFH excuse #423: „It's not RFC-822 compliant.“
Mein total langweiliger Blog
  Mit Zitat antworten Zitat
SyntaxXx

Registriert seit: 14. Dez 2008
328 Beiträge
 
Delphi XE4 Architect
 
#14

AW: TCP Verbindug und RCON

  Alt 21. Jul 2013, 22:16
Ok ich habe mir nochmal ein paar Gedanken gemacht und bin auf Sachen gestoßen, die eigentlich keinen Sinn machen.
Dazu hier ein kleines Beispiel, auf das ich mich beziehen werde.

Bsp.:
Delphi-Quellcode:
procedure SendCommand(Command: string);
var Packet: Array[0..19] of Byte;
    bytes: TIdBytes;
begin
  Command := 'passwrd';
  //SetLength(Packet, 13 + length(Command));

  Packet[0] := 9 + length(Command); //Packet Size
  Packet[1] := 0;
  Packet[2] := 0;
  Packet[3] := 0;
  Packet[4] := 0; // Packet ID (Positiv)
  Packet[5] := 0;
  Packet[6] := 0;
  Packet[7] := 0;
  Packet[8] := 3; // Packet Type (SERVERDATA_AUTH)
  Packet[9] := 0;
  Packet[10] := 0;
  Packet[11] := 0;
  Packet[12] := TEncoding.Default.GetBytes('p')[0]; // Body
  Packet[13] := TEncoding.Default.GetBytes('a')[0];
  Packet[14] := TEncoding.Default.GetBytes('s')[0];
  Packet[15] := TEncoding.Default.GetBytes('s')[0];
  Packet[16] := TEncoding.Default.GetBytes('w')[0];
  Packet[17] := TEncoding.Default.GetBytes('r')[0];
  Packet[18] := TEncoding.Default.GetBytes('d')[0];
  Packet[19] := 0; // Null terminator

  SetLength(bytes, 20);
  move(Packet, bytes[0], 20);

  Form1.idTCPClient1.IOHandler.Write(bytes);
end;
1. Packet Size
Diese soll die Größe des TCP Packets sein - 4 Bytes, da Packet Size nicht mitgezählt wird
Zitat:
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
Desweiteren muss die Größe mindestens 10 Bytes sein.
Zitat:
The minimum possible value for packet size is 10
Das heißt, das die Größe in meinem Beispiel 15 sein müsste.
Warum wird dann im Beispiel von Steam einfach "length(Command) + 9" genommen?
Das wäre ja dann nur Glück.

Packet(0) = Command.Length + 9 'Packet Size (Integer)


2. Array of Byte zu TIdBytes
Wie mir ja schon richtig geraten wurde, muss ich das Array ja als TIdBytes senden.
Dazu habe ich oben in meinem Beispiel die meiner Meinung nach richtige Lösung.

Warum wurde mir auf der ersten Seite das hier vorgeschlagen?
Delphi-Quellcode:
SetLength(bytes, rconpacket.Size);
  Move(rconpacket, bytes[0], rconpacket.Size);
Wenn ja Packet Size immer 4 Bytes kleiner ist als die eigentliche Länge, macht es ja keinen Sinn diese zu kopieren.


3. Statisches und dynamisches Array
Oben in meinem Speispiel verwende ich ein statisches Array.
Doch da die länge von "Command" ja unterschiedlich ist, müsste ich ja eigentlich dein dynamisches Array benutzen, was ich oben ja als Kommentar eingetragen habe.
(Natürlich habe ich "Packet: Array[0..19] of Byte;" zu "Packet: Array of Byte;" geändert.

Doch wenn ich das benutze, bekomme ich ganz wirre Zeichen angezeigt, wenn ich mir den Traffic ansehe.
Das heißt, dass ja dann irgendwas nicht richtig kopiert wird.


Ich habe jetzt oben meine Methode benutzt, aber bekomme wie schon im Post davor keine Antwort vom Server auf den Befehl "status".

Nach der abgeänderten Version sieht der Traffic jetzt so aus:
Code:
............passwrd.
.............
.........................status.

Packet Typ habe ich beim Befehl "status" natürlich von 3 auf 2 geändert.

Geändert von SyntaxXx (21. Jul 2013 um 22:19 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von x000x
x000x

Registriert seit: 21. Jan 2004
Ort: Bei Hamburg
308 Beiträge
 
Delphi XE2 Professional
 
#15

AW: TCP Verbindug und RCON

  Alt 22. Jul 2013, 09:27
Moin moin,

soweit ich gesehen habe, schickst du nicht den "Empty String" mit. Zum einen muss der Body mit #0 terminiert werden und zum anderen muss auch der "Empty String" (#0) mitgeschickt werden - d.h. du schickst ein #0 am Ende deines Paketes zu wenig.
(Jedenfalls wenn ich die Doku richtig gelesen habe)
Peter
-= Gruss Peter =-
-= alias x000x =-
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:43 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz