AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Indy Client empfängt echo vom Indy Server
Thema durchsuchen
Ansicht
Themen-Optionen

Indy Client empfängt echo vom Indy Server

Ein Thema von ashkan19 · begonnen am 13. Okt 2020 · letzter Beitrag vom 19. Okt 2020
Antwort Antwort
Seite 1 von 2  1 2      
ashkan19

Registriert seit: 13. Okt 2020
36 Beiträge
 
#1

Indy Client empfängt echo vom Indy Server

  Alt 13. Okt 2020, 10:24
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?
  Mit Zitat antworten Zitat
Edelfix

Registriert seit: 6. Feb 2015
Ort: Stadtoldendorf
216 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Indy Client empfängt echo vom Indy Server

  Alt 13. Okt 2020, 14:09
Hast du ein kleines Beispiel als Quellcode?
  Mit Zitat antworten Zitat
ashkan19

Registriert seit: 13. Okt 2020
36 Beiträge
 
#3

AW: Indy Client empfängt echo vom Indy Server

  Alt 15. Okt 2020, 09:16
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;
  Mit Zitat antworten Zitat
HolgerX

Registriert seit: 10. Apr 2006
Ort: Leverkusen
972 Beiträge
 
Delphi 6 Professional
 
#4

AW: Indy Client empfängt echo vom Indy Server

  Alt 15. Okt 2020, 11:36
Hmm..

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;
Wie soll der Client das ECHO empfangen, wenn er nach Verschicken der Daten die Verbindung direkt wieder schließt?
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
(Ja ich Verwende Delphi 6 Pro und will NICHT wechseln!)
  Mit Zitat antworten Zitat
ashkan19

Registriert seit: 13. Okt 2020
36 Beiträge
 
#5

AW: Indy Client empfängt echo vom Indy Server

  Alt 15. Okt 2020, 20:50
Ich danke dir vielmals. Hast du eventuell ein Beispiel wie ich die Verbindug aufrecht erhalten konnte?
  Mit Zitat antworten Zitat
Edelfix

Registriert seit: 6. Feb 2015
Ort: Stadtoldendorf
216 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: Indy Client empfängt echo vom Indy Server

  Alt 16. Okt 2020, 12:00
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;
  Mit Zitat antworten Zitat
Benutzerbild von scrat1979
scrat1979

Registriert seit: 12. Jan 2007
Ort: Sulzbach a.d. Murr
1.029 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: Indy Client empfängt echo vom Indy Server

  Alt 17. Okt 2020, 19:33
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;
Ich würde etwas anders vorgehen, nämlich in jeden Fall vom Server eine Antwort schicken und durch den Clienten auswerten. Dann spart man sich den Timeout (ich gehe dabei davon aus, dass in der Zwischenzeit die Verbindung zum Server/Client nicht anderweitig gekappt wurde...)
Michael Kübler
  Mit Zitat antworten Zitat
ashkan19

Registriert seit: 13. Okt 2020
36 Beiträge
 
#8

AW: Indy Client empfängt echo vom Indy Server

  Alt 19. Okt 2020, 09:22
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?
  Mit Zitat antworten Zitat
Benutzerbild von holger_barntrup
holger_barntrup

Registriert seit: 1. Feb 2007
Ort: Barntrup
97 Beiträge
 
Delphi 10.4 Sydney
 
#9

AW: Indy Client empfängt echo vom Indy Server

  Alt 19. Okt 2020, 09:57
Da du von einem INDY Client sprichst, hast dir dieses Beispiel mal angesehen und vlt. nachvollzogen?
Gruß Holger
  Mit Zitat antworten Zitat
ashkan19

Registriert seit: 13. Okt 2020
36 Beiträge
 
#10

AW: Indy Client empfängt echo vom Indy Server

  Alt 19. Okt 2020, 12:21
Das Programm funktioniert ebenso nicht, daher vermute ich, dass das Problem bei dem Modul und sein server liegt, aber ich danke dir nochmal herzlich
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:54 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz