![]() |
Indy Client empfängt echo vom Indy Server
Guten Tag allerseits,
Ich habe bereits einen TCP Clienten aufgebaut, welche ein bestimmten Hex code an einem Modul verschicken sollte. der Server vom Modul (nicht mein Bastelwerk) schickt einen Echo zurück, sollte er die Nachricht nicht erkennen. Nun mein Problem ist, dass mein Client kein Echo zurück bekommt. müsste ich einen bestimmten Ereignis dafür einprogrammieren, sodass der Client Nachrichten vom Server abfangen kann? |
AW: Indy Client empfängt echo vom Indy Server
Hast du ein kleines Beispiel als Quellcode?
|
AW: Indy Client empfängt echo vom Indy Server
hier ist mein Server:
Delphi-Quellcode:
procedure TForm1.TCPServerDisconnect(AContext: TIdContext);
begin Memo1.Lines.Add('Verbindungsabbruch: '+AContext.Binding.PeerIP); end; procedure TForm1.TCPServerExecute(AContext: TIdContext); begin memo1.Lines.Add('Nachricht: '+AContext.Connection.IOHandler.ReadLn); end; end. und hier ist mein Client:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin TCPclient.Port:=strtoint(edit3.Text); TCPclient.Host:= edit2.Text; TCPClient.Connect; if TCPClient.Connected then begin //stringtohexstr(edit1.text); TCPClient.IOHandler.WriteLn(edit1.Text); TCPClient.IOHandler.WriteLn(string2hex(edit1.Text)+' (in Hexadezimal)'); TCPClient.Disconnect; end; end; |
AW: Indy Client empfängt echo vom Indy Server
Hmm..
Zitat:
Wie soll der Server ein ECHO schicken, wenn die Verbindung nach Erhalt der Daten nicht mehr da ist? Es kann nur so gehen: - Client Connect to Server - Client sendet Daten to Server - Client hält Verbindung offen und Wartet (eventuell x Sekunden Timeout) - Server antwortet an die offene Verbindung mit ECHO - Client bekommt ECHO (oder nach Timeout eben nicht) - Client schließt Verbindung |
AW: Indy Client empfängt echo vom Indy Server
Ich danke dir vielmals. Hast du eventuell ein Beispiel wie ich die Verbindug aufrecht erhalten konnte?
|
AW: Indy Client empfängt echo vom Indy Server
So in etwa:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var tcStart: Cardinal; aWartezeit: Cardinal; begin TCPclient.Port:=strtoint(edit3.Text); TCPclient.Host:= edit2.Text; TCPClient.Connect; if TCPClient.Connected then begin //stringtohexstr(edit1.text); TCPClient.IOHandler.WriteLn(edit1.Text); TCPClient.IOHandler.WriteLn(string2hex(edit1.Text)+' (in Hexadezimal)'); //-- tcStart := GetTickCount; aWartezeit := 5000; // 5sek. while (GetTickCount<=tcStart+aWartezeit) do begin Application.ProcessMessages; Sleep(300); end; //-- TCPClient.Disconnect; end; end; |
AW: Indy Client empfängt echo vom Indy Server
Zitat:
|
AW: Indy Client empfängt echo vom Indy Server
Ich bekomme leider immer noch kein Echo. konnte es eventuell daran liegen, dass man ein bestimmtes Ereignis vom Clienten zum Empfangen von Daten zuerst ein programmieren sollte?
|
AW: Indy Client empfängt echo vom Indy Server
Da du von einem INDY Client sprichst, hast dir
![]() |
AW: Indy Client empfängt echo vom Indy Server
Das Programm funktioniert ebenso nicht, daher vermute ich, dass das Problem bei dem Modul und sein server liegt, aber ich danke dir nochmal herzlich
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:31 Uhr. |
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