ich bin gerade am Verzweifeln.
ich versuche einen Stream mit Hilfe von TIdTcpClient an einen server zu schicken und bin auch schon dabei, dass ich die daten per Network-Sniffer überprüfe.
wenn ich den Stream aus einem File lese (TFileStream) klappt das auch wunderbar und über den Sniffer sehe ich, dass genau der Inhalt des Files verschickt wird.
Nun versuche ich aber das Ganze ohne File zu versenden und scheitere daran, dass da irgendwas verschickt wird aber nicht das, was ich eigentlich verschicken will.
Der Source dazu sieht im moment folgendermaßen aus:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25:
| TTelegrammStruct = record Size: LongWord; Content: string; end;
...
var send: TTelegrammStruct; stream: TMemoryStream; begin send.size := 14; send.content := '0000000001Test';
stream := TMemoryStream.Create; stream.Position := 0; stream.Size := 18; stream.WriteBuffer(send.Size, SizeOf(send.Size)); stream.WriteBuffer(send.Content, send.Size); IdTCPClient.WriteStream(stream, true);
stream.Free; end; |
Also das Protokoll ist so spezifiziert, dass die ersten 4 Bytes des Streams die nachfolgende Größe des Inhalts angeben.
Es werden zwar genau 18 Bytes gesendet, aber der Inhalt hat nix mit dem zu tun, was ich in den Stream geschrieben habe
Quelltext
1: 2:
| 0000: 0E 00 00 00 04 81 47 00 C4 5A 9B 00 98 42 9B 00 ......G..Z...B.. 0010: 00 00 .. |
Was ist da mein grundlegender Fehler?