Autor Beitrag
ThomasEi
Hält's aus hier
Beiträge: 7

WinXP Pro SP3 & Win7
... D2005 Pro / D2010 Pro
BeitragVerfasst: Sa 28.01.12 16:42 
Hallo,

ich habe ein Problem, dass die TCP Daten per Indy nicht richtig gesendet werden.
Diese werden verändert als würden Zeichen größer $7F nicht zulässig sein.

Warum? Was mache ich falsch? Wie kann man dies machen?

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
procedure TForm1.Button1Click(Sender: TObject);
var s : string;
begin
  IdTCPClient1.Host := IPAdresse.Text;
  IdTCPClient1.Port := StrToInt(Port.Text);
  IdTCPClient1.Connect;

  s := #$03+#$00+#$8F+#$14+#$FF+#$05+#$0C+#$30// das möchte ich gern senden
  Form1.IdTCPClient1.IOHandler.Write(s);
  // $03 $00 $3f $14 $79 $05 $0c $30 => das wird aber gesendet, laut Wireshark

  if IdTCPClient1.Connected then IdTCPClient1.Disconnect;
end;
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19326
Erhaltene Danke: 1749

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Sa 28.01.12 16:55 
Indy wandelt die Zeichensätze leider ungefragt um, das musste ich auch schon feststellen. Irgendwo kann man das Encoding explizit angeben, aus dem Kopf weiß ich nicht wo. Ich kann aber schauen, wenn du das nicht selbst findest. Schau einfach mal nach Encoding oder so.

Ich glaube das konnte man als weiteren Parameter an Write übergeben.
ThomasEi Threadstarter
Hält's aus hier
Beiträge: 7

WinXP Pro SP3 & Win7
... D2005 Pro / D2010 Pro
BeitragVerfasst: Sa 28.01.12 17:28 
DANKE für den Tipp, so funktioniert es

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
procedure TForm1.Button1Click(Sender: TObject);
var s : string;
begin
  IdTCPClient1.Host := IPAdresse.Text;
  IdTCPClient1.Port := StrToInt(Port.Text);
  IdTCPClient1.Connect;

  s := #$03+#$00+#$8F+#$14+#$FF+#$05+#$0C+#$30;
  Form1.IdTCPClient1.IOHandler.Write(s, TEncoding.Default);

  if IdTCPClient1.Connected then IdTCPClient1.Disconnect;
end;