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
SyntaxXx

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

AW: TCP Verbindug und RCON

  Alt 9. Jul 2013, 22:52
Ok vielen Dank.
Ich habe mir schon fast gedacht, dass es sich um ein Array handeln muss.

Aber nur zum Verständnis.
Der Record ist aber doch eigentlich nicht notwendig oder?

Es würde doch dann ganz einfach auch reichen, wenn ich das Array fülle.
Delphi-Quellcode:
  data[0] := length(Command) + 9;
  data[4] := 0;
  data[8] := 3;

  for i := 0 to length(Command) - 1 do
    RCON.data[12 + i] := TEncoding.Default.GetBytes(Command[i])[0];
Zum Schluss müsste ich doch dann nur noch das Array versenden.
idTCPClient1.IOHandler.Write(); Die Frage ist aber jetzt, wie ich das Array versende.
Ich habe hier jetzt ...Write() genommen, weil hier "TIdBytes" erwartet wird.

Aber ich verstehe nicht, wie ich das komplette Array versenden kann.
...Write(data[0]); funktioniert zwar, aber da sende ich ja nicht die komplette Anfrage.
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

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

AW: TCP Verbindug und RCON

  Alt 10. Jul 2013, 10:09
Es würde doch dann ganz einfach auch reichen, wenn ich das Array fülle.
Entscheidend ist was hinten rauskommt.
Aber du "schlamperst" jetzt auch.
Wer sagt denn, dass data[1] = 0 ist?
Es hängt vom Zufall ab.
Delphi-Quellcode:
  data[0] := length(Command) + 9;
  data[1] := 0; // *
  data[2] := 0; // *
  data[3] := 0; // *
  data[4] := 0;
Was machst du, wenn die Länge des "Command" mal den Wert von 256-9 überschreiten sollte?
Der Record hat den Vorteil, dass die Struktur klar festgelegt ist.

Keine Ahnung weshalb man Indy nicht eine Write-Funktion spendiert hat, mit der man beliebige Datentypen schreiben kann (so wie bei TStream.Write()).
Dann muss man halt kopieren:
Delphi-Quellcode:
var
  bytes : TIdBytes;
  rconpacket : TRconPacket;
begin
  ...
  SetLength(bytes, rconpacket.Size);
  Move(rconpacket, bytes[0], rconpacket.Size);
  idTCPClient1.IOHandler.Write(bytes);
fork me on Github
  Mit Zitat antworten Zitat
SyntaxXx

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

AW: TCP Verbindug und RCON

  Alt 10. Jul 2013, 21:13
Ok soweit habe ich das jetzt umgesetzt und benutze jetzt ein Record.
Habe es jetzt auch in ein "Array of Byte" (TIdBytes) kopiert, so wie du es gezeigt hast.

Doch irgendwie nörgelt der Compiler noch rum:

Delphi-Quellcode:
type
  TIdBytes = array of Byte;
  ....
Delphi-Quellcode:
...
idTCPClient1.IOHandler.Write(bytes);
...
Zitat:
[dcc32 Fehler] Unit1.pas(72): E2250 Es gibt keine überladene Version von 'Write', die man mit diesen Argumenten aufrufen kann
Aber warum?
Ich habe doch alles so gemacht, wie es von ...Write() erwartet wird, oder übersehe ich hier noch was?
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

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

AW: TCP Verbindug und RCON

  Alt 10. Jul 2013, 22:05
TIdBytes ist in Unit IdGlobal deklariert.
Diese Unit muss eingebunden werden (TIdBytes nicht selbst deklarieren!).

Strg-Taste gedrückt halten und auf das ".write" klicken.
Die IDE müsste dann die richtige Unit (IdIoHandler.pas oder so) öffnen und den Sourcecode für alle überladenen write()-Funktionen anzeigen.

Eine Write()-Funktion müsste so deklariert sein:
procedure Write(ABuffer: TIdBytes); virtual; overload;
fork me on Github
  Mit Zitat antworten Zitat
SyntaxXx

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

AW: TCP Verbindug und RCON

  Alt 14. Jul 2013, 20:52
Wie nicht anders zu erwarten war, hattest du natürlich recht.
Doch ich stoße noch auf ein weiteres Problem.

Wenn ich mir die Größe des Arrays ausgeben lasse, bekomme ich 4088 angezeigt, was ja alles Regelkonform wäre.
Doch wenn ich die Variable bytes mit setlength ändern will, gibt diese mir immer nur 4 aus, was ja dann nicht passt.

Kann es sein, dass ich in diesem Falle nicht mit setlength arbeiten kann?


Edit:
Natürlich muss ich length() nehmen, um die Länge festzustellen.
Dann muss ich mal weiter schauen, wieso die Verbindung immer noch sofort geschlossen wird.

Geändert von SyntaxXx (14. Jul 2013 um 21:15 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

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

AW: TCP Verbindug und RCON

  Alt 15. Jul 2013, 13: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
 
#7

AW: TCP Verbindug und RCON

  Alt 20. Jul 2013, 08: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
Antwort Antwort


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 13:52 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