Einzelnen Beitrag anzeigen

DArc

Registriert seit: 3. Jun 2009
48 Beiträge
 
Delphi 7 Enterprise
 
#7

AW: TIdTCPServer Byte Packets (Indy10)

  Alt 17. Okt 2011, 16:32
danke erst mal für die antwort, schön zu sehen, dass es leute gibt die früh morgens antworten
nehmen wir das beispiel, welches ich im letzten post behandelt habe:
http://mc.kev009.com/Protocol#Handshake_.280x02.29

Weiter oben steht die Definition der "Packets"
Code:
All packets begin with a single "Packet ID" byte. Listed packet size includes this byte. Packets are either "server to client", "client to server", or both. If not specified, assume that the packet can be sent both ways. There is no "length" field; for variable length packets, you must parse to the end to determine the length.
Die Länge des Packets, welches geschickt wird:
Code:
Total Size:    3 bytes + length of strings
soll (glaube ich mal) heißen, dass ich min. 3 bytes zugeschickt bekomme (spekuliere auf benutzername min. 1 zeichen):
1. byte: packet id
2. byte: länge der zeichenkette (länge des benutzernamens)
3. byte: das zeichen selbst

habe ich zB den Namen DArc, empfange ich folgendes (3 Bytes + 3 weitere):
1. byte: packet id = 0x02 => 2
2. byte: länge meines namens = 4
3. byte: das zeichen "D" im ASCII Code
4. byte: das zeichen "A"
5. "r"
6. "c"

zum hinweis auf nicht vorhandene deklaration, ich hab doch in meinem Record folgendes:
Delphi-Quellcode:
  TMyPacket = packed record
    id: Byte;
    length: Byte;
    username: array[0..15] of AnsiChar; // bzw. of Byte
  end;
€dit: wenn ich etwas auf der Protocol Dokumentationsseite falsch entnommen, interpretiert oder überlesen habe, so
bitte ich um verständnis und um korrektur
Ich würde gerne die Welt verändern, doch Gott hat
vergessen mir die Quellcodes zu geben ... !

Geändert von DArc (17. Okt 2011 um 16:34 Uhr)
  Mit Zitat antworten Zitat