Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Indy TCP client empfangene Daten ausgeben (https://www.delphipraxis.net/177602-indy-tcp-client-empfangene-daten-ausgeben.html)

fox67 15. Nov 2013 13:03

AW: Indy TCP client empfangene Daten ausgeben
 
Zitat:

Zitat von stalkingwolf (Beitrag 1236101)
Ich benutze selber immer noch einen TThread der sich um das Thema kümmert, damit die Hauptanwendung nicht blockiert wird.

Delphi-Quellcode:
TClientHandleThread = class(TThread)
  private
    msg : string;
    procedure HandleInput;
    protected
    procedure Execute; override;
  end;

procedure TClientHandleThread.HandleInput;
begin
    addlog(msg);
end;

procedure TClientHandleThread.Execute;
begin
    while not Terminated do begin
        if fmain.myindytcpClient.Connected then begin
            try
                msg:=fmain.myindytcpClient.ReadLn;
                Synchronize(HandleInput);
            except
            end;
        end;
    end;
end;

procedure fmain.myindytcpClientDisconnected(Sender: TObject);
begin
    try
        ClientHandleThread.Terminate;
    except
    end;
end;
und beim connecten auf den Server

Delphi-Quellcode:
ClientHandleThread := TClientHandleThread.Create(True);
                    ClientHandleThread.FreeOnTerminate := True;
                    ClientHandleThread.Resume;
Woher kommen die Daten denn?

Hab ich oben schon geschrieben. Hier ist ein Manual zu dem Server

mjustin 15. Nov 2013 13:05

AW: Indy TCP client empfangene Daten ausgeben
 
Zitat:

Zitat von Mavarik (Beitrag 1236099)
Also...

Ein .Connect baut die Verbindung auf...

Danach besteht die Verbindung aber noch nicht... Das ist keine Procedure die Ausgeführt wird und wartet bis der Server Antwortet... Schau Dir mal die Ereignisse der Komponente an...

Bei den Indy TCP Komponenten blockiert Connect solange, bis die Verbindung aufgebaut wurde, sie vom Server abgelehnt wurde, oder das Connect Timeout abgelaufen ist ohne dass die Verbindung aufgebaut wurde.

OnConnect ist nur ein optionales Event, um Aktion nach dem Verbindungsaufbau auszuführen.

Indy unterscheidet sich in diesen Punkten von asynchronen Komponenten wie TClientSocket, bei denen es OnRead etc. gibt.

Mavarik 15. Nov 2013 13:09

AW: Indy TCP client empfangene Daten ausgeben
 
Zitat:

Zitat von fox67 (Beitrag 1236107)
Hab ich oben schon geschrieben. Hier ist ein Manual zu dem Server

Und jetzt sollen wir gemäß der Docu für Dich die Routine schreiben?

himitsu 15. Nov 2013 13:11

AW: Indy TCP client empfangene Daten ausgeben
 
Zitat:

Zitat von Mavarik (Beitrag 1236099)
Und es gibt ein OnReceive... Was das wohl macht? Richtig, wird aufgerufen, wenn Daten vorliegen...

OnReceive wird nicht automatisch beim Datenempfang aufgerufen.

Das wird aufgerufen, wenn Daten empfangen werden, was aber erst durch den Aufruf der Read-Funktionen veranlasst wird.
Das ist also eine reine Logging-Funktion, bzw. zum "manipulieren" der übertragenen Daten, z.B. für eine Verschlüsselung.

mjustin 15. Nov 2013 13:12

AW: Indy TCP client empfangene Daten ausgeben
 
Zitat:

Zitat von fox67 (Beitrag 1236090)
Hallo
ich würde gerne mit delphi Datenpakete die von einem TCP server versendet werden empfangen und in einer Memo ausgeben. Die Daten sehen so aus wie in diesem Manual Seite4. Die Daten werden konstant ohne Unterbrechung gesendet.

Mit Wireshark könnte man nachschauen, was tatsächlich gesendet wird. Eventuell wird ein anderer Zeilenseparator verwendet als bei ReadLn.

Oder ohne Wireshark: einfach in einer Schleife Byte für Byte lesen und ausgeben. Dann könnte man den Datenstrom im Debugger einfach mitlesen.

Mavarik 15. Nov 2013 13:18

AW: Indy TCP client empfangene Daten ausgeben
 
Zitat:

Zitat von himitsu (Beitrag 1236112)
Zitat:

Zitat von Mavarik (Beitrag 1236099)
Und es gibt ein OnReceive... Was das wohl macht? Richtig, wird aufgerufen, wenn Daten vorliegen...

OnReceive wird nicht automatisch beim Datenempfang aufgerufen.

Das wird aufgerufen, wenn Daten empfangen werden, was aber erst durch den Aufruf der Read-Funktionen veranlasst wird.
Das ist also eine reine Logging-Funktion, bzw. zum "manipulieren" der übertragenen Daten, z.B. für eine Verschlüsselung.

Indy... OK... Ihr habt recht... Wer lesen kann ist klar im Vorteil

fox67 15. Nov 2013 13:35

AW: Indy TCP client empfangene Daten ausgeben
 
Zitat:

Zitat von Mavarik (Beitrag 1236111)
Zitat:

Zitat von fox67 (Beitrag 1236107)
Hab ich oben schon geschrieben. Hier ist ein Manual zu dem Server

Und jetzt sollen wir gemäß der Docu für Dich die Routine schreiben?

Wer hat das gesagt? Ich hab die Datei nur hinzugefügt damit ihr euch ein Bild machen könnt und mir so besser helfen könnt. Mein Programmcode kommt aus dem Tutorial von der Seite Delphi treff.


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:45 Uhr.
Seite 2 von 2     12   

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