Thema: Delphi Query an Gameserver

Einzelnen Beitrag anzeigen

Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#22

AW: Query an Gameserver

  Alt 18. Feb 2015, 20:43
Im Prinzip ist es ganz einfach (wenn man sich die Daten genau anschaut).

Dann fällt auf, dass jeder String mit einem 00 Byte abgeschlossen ist.

Wie ich denn darauf komme?

A2S_INFO
  1. Header: byte
  2. Payload: string
Code:
FF FF FF FF 54 53 6F 75 72 63 65 20 45 6E 67 69   ÿÿÿÿTSource Engi
6E 65 20 51 75 65 72 79 00                        ne Query
Schauen wir uns das Datenpaket an, dann finden wir die ersten 4 Bytes mit FF , dann den Header mit 54 und der Rest ist der String ... öh, bis auf das letzte Byte 00 .

Nächstes Beispiel angesehen
Code:
FF FF FF FF 49 02 67 61 6D 65 32 78 73 2E 63 6F    ÿÿÿÿI.game2xs.co
6D 20 43 6F 75 6E 74 65 72 2D 53 74 72 69 6B 65    m Counter-Strike
20 53 6F 75 72 63 65 20 23 31 00 64 65 5F 64 75     Source #1.de_du
73 74 00 63 73 74 72 69 6B 65 00 43 6F 75 6E 74    st.cstrike.Count
65 72 2D 53 74 72 69 6B 65 3A 20 53 6F 75 72 63    er-Strike: Sourc
65 00 F0 00 05 10 04 64 6C 00 00 31 2E 30 2E 30    e......dl..1.0.0
2E 32 32 00                                        .22.
Aha, da sind ja wieder diese 00 Bytes zwischen den einzelnen Strings. Sehr schön.

Um dieses jetzt vernünftig zu lösen, baut man sich eine Klasse, die aus einem Stream diese Daten-Formate auslesen kann (so wie im PHP-Skript).
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat