TCP Daten per Indy werden nicht richtig gesendet
spacer
Autor Nachricht
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 markieren
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;
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
Werbung ausblenden? Dann registriere Dich kostenlos. Weitere Gründe für eine Registrierung.


Werbung ausblenden? Dann registriere Dich kostenlos. Weitere Gründe für eine Registrierung.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 15841
Erhaltene Danke: 741

XP, W7 x64 (Chrome, IE9, FF), Debian, (OSX 10.7)
RAD XE 2, Java (NB), C++, C# (VS 2010), JS/HTML, 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.
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
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 markieren
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;
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
home home