Delphi-PRAXiS
Seite 3 von 5     123 45      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi TCP persistent (https://www.delphipraxis.net/186049-tcp-persistent.html)

jeng37 19. Aug 2015 02:35

AW: TCP persistent
 
Hallo,

Ich habs am laufen!
Nur wieso funktionniert es mit der socket compo. und nicht mit der Indy?

Hier die socket version mit der es funktionniert!
Delphi-Quellcode:
procedure TfrmMain.Button2Click(Sender: TObject);
  var
    Data: AnsiString;
begin
  Data := #$04#$01#$02#$23#$3c#$00#$0a#$01#$ff#$00#$00#$00#$00#$00#$00#$00#$fe; // Nachricht zusammenbauen, z.B. schalten
  Memo1.Lines.Add('Send2: '+Str2Hex(Data));
  ClientSocket1.Socket.SendText(Data);
end;
Hier dann die Indy version mit IdTcpClient. (funktionniert leider nicht)
Delphi-Quellcode:
procedure TfrmMain.Button2Click(Sender: TObject);
Var
  port1on: string;
begin
  port1on := #$04#$01#$02#$23#$3c#$00#$0a#$01#$ff#$00#$00#$00#$00#$00#$00#$00#$fe;
  IdTCPClient1.IOHandler.Write(port1on);
end;

jeng37 20. Aug 2015 11:31

AW: TCP persistent
 
Dieses funktionniert leider auch nicht!
Was mache ich Falsch?

Delphi-Quellcode:
Procedure TFClient.BSendClick(Sender: TObject);
Var
    buf: TidBytes;
 

begin
  SetLength(Buf, 17);
  FillBytes(Buf, 17, 0);
  Buf[0] := $04;
  Buf[1] := $01;
  Buf[2] := $02;
  Buf[3] := $23;
  Buf[4] := $3c; // para1; //Exo1
  Buf[5] := $00;
  Buf[6] := $0a;
  Buf[7] := $01;
  Buf[8] := $ff;//port1;
  Buf[9] := $00;//port2;
  Buf[10] := $00;//port3;
  Buf[11] := $00;//port4;
  Buf[12] := $00;//port5;
  Buf[13] := $00;//port6;
  Buf[14] := $00;//port7;
  Buf[15] := $00;//port8;
  Buf[16] := $fe;//para3;
 
  //IdTCPClient1.IOHandler.Write(Buf); <---- geht nicht
  IdTCPClient1.Socket.Write(buf); <---- geht auch nicht
obwohl im buf die richtige bytefolge gesendet wird. :wall:

Klaus01 20. Aug 2015 12:27

AW: TCP persistent
 
.. und wie schaut es mit

Delphi-Quellcode:
idTCPClient1.IOHandler.Write(buf,17);
aus?

Grüße
Klaus

jeng37 20. Aug 2015 17:01

AW: TCP persistent
 
Zitat:

Zitat von Klaus01 (Beitrag 1312862)
.. und wie schaut es mit

Delphi-Quellcode:
idTCPClient1.IOHandler.Write(buf,17);
aus?

Nein leider hilft das auch nicht.

Klaus01 20. Aug 2015 18:57

AW: TCP persistent
 
.. bekommst Du eine Fehlermeldung - in Deinem Programm oder in der entfernten Anwendung?

Der Client hat sivh auch mit dem Server verbunden bevor Du die Nachricht abschickst - oder?

Grüße
Klaus

jeng37 20. Aug 2015 19:04

AW: TCP persistent
 
Zitat:

Zitat von Klaus01 (Beitrag 1312928)
.. bekommst Du eine Fehlermeldung - in Deinem Programm oder in der entfernten Anwendung?

Nein gar keine Fehlermeldung. Wenn ich einnen Break Point stetze steht auch die richtige bytefolge in Buf.
Sie kommt auch an, ich sehe das am flackern der led's.

Zitat:

Der Client hat sivh auch mit dem Server verbunden bevor Du die Nachricht abschickst - oder?
Ja die verbindung steht auch, ich sende zuerst einnen connect, danach einen login, und bekomme die variable v056 zurück. Damit weiss ich dass connect und login ok waren.

Es ist echt zum verzweifeln, weil es ja mit der socks komponente funst.
Ich brauche aber die Indy kompo wegen Android.

Klaus01 20. Aug 2015 19:11

AW: TCP persistent
 
Hast Du eine Möglichkeit die übertragenen Daten zu tracen (mit Wireshark z.B.).
Einmal mit socks und einmal mit indy versandt.

Vielleicht zeigen sich ja Unterschiede.

Grüße
Klaus

jeng37 20. Aug 2015 19:15

AW: TCP persistent
 
Zitat:

Zitat von Klaus01 (Beitrag 1312930)
Hast Du eine Möglichkeit die übertragenen Daten zu tracen (mit Wireshark z.B.).
Einmal mit socks und einmal mit indy versandt.

Vielleicht zeigen sich ja Unterschiede.

Ja gute idee, das hab ich noch nicht versucht!
Danke,
Ich mach mich mal gleich ans werk.

jeng37 20. Aug 2015 19:29

AW: TCP persistent
 
Liste der Anhänge anzeigen (Anzahl: 2)
Hier das resultat.

Indy Dump:
bytefolge die ich sende: 04 01 02 23 3c 00 0a 01 ff 00 00 00 00 00 00 00 fe
Und das modul schaltet nicht!!

Socks Dump:
bytfolge die ich sende: 04 01 02 23 3c 00 0a 01 ff 00 00 00 00 00 00 00 fe
Da wird aber irgendwie noch zwei bytes angehängt!
Und zwar 0d 0a. CR/LF
Ergibt also : 04 01 02 23 3c 00 0a 01 ff 00 00 00 00 00 00 00 fe 0d 0a
Und das modul schaltet!!

Soll/kann das mein problem sein?
Hab die zwei dumps mal angehängt.

Edit: Hab auch die zwei bytes in buf beigefügt und länge angepasst, schaltet trotzdem nicht.

Klaus01 20. Aug 2015 20:26

AW: TCP persistent
 
Bei dem Versand mit sock verwendest Du SendText, das wird wohl cr/LF anfügen.
Bei Indy sollte es etwas ähnliches geben.. writeLn z.b.

Grüße
Klaus


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:09 Uhr.
Seite 3 von 5     123 45      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz