AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Indy TCP client empfangene Daten ausgeben
Thema durchsuchen
Ansicht
Themen-Optionen

Indy TCP client empfangene Daten ausgeben

Ein Thema von fox67 · begonnen am 15. Nov 2013 · letzter Beitrag vom 15. Nov 2013
Antwort Antwort
Seite 1 von 2  1 2      
fox67

Registriert seit: 6. Okt 2010
Ort: 72661 Grafenberg
181 Beiträge
 
Turbo Delphi für Win32
 
#1

Indy TCP client empfangene Daten ausgeben

  Alt 15. Nov 2013, 12:29
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.

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
IdTCPClient1.Connect;

   try
      memo1.Lines.Text :=IdTCPClient1.ReadChar;
      finally
    IdTCPClient1.Disconnect;
    end;

end;
Ich habe es so probiert aber das funktioniert leider nicht. Ich vermute weil Delphi wartet bis das Senden gestoppt wird.
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.126 Beiträge
 
Delphi 10.3 Rio
 
#2

AW: Indy TCP client empfangene Daten ausgeben

  Alt 15. Nov 2013, 12:33
hmm

Wieviele Zeichen werden den von .ReadChar gelesen?

Nee Idee?

Und ist zu diesem Zeitpunkt den die Connection überhaupt schon etabliert?


Mavarik
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.152 Beiträge
 
Delphi 12 Athens
 
#3

AW: Indy TCP client empfangene Daten ausgeben

  Alt 15. Nov 2013, 12:35
Ankommende Daten empfangen und ausgeben?

Oder bei einem bestehenden Code die komenden/gehenden Daten "mitschreiben"?
> hier gibt es passende Events ala IdTCPClient1.On...




Und was macht wohl memo1.Lines.Text := ... ?
> alle "vorher" eingetragenen Daten immer wieder mit dem letzten kleinen Stück ersetzen

siehe Mavarik

Also willst du wohl eher, in einer "Schleife", alle neuen Daten einlesen, bis die Verbindung getrennt wurde.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (15. Nov 2013 um 12:39 Uhr)
  Mit Zitat antworten Zitat
fox67

Registriert seit: 6. Okt 2010
Ort: 72661 Grafenberg
181 Beiträge
 
Turbo Delphi für Win32
 
#4

AW: Indy TCP client empfangene Daten ausgeben

  Alt 15. Nov 2013, 12:38
Ich will nur Empfangen und ausgeben
  Mit Zitat antworten Zitat
stalkingwolf

Registriert seit: 6. Mai 2011
518 Beiträge
 
#5

AW: Indy TCP client empfangene Daten ausgeben

  Alt 15. Nov 2013, 12:39
Mit readln sollte es gehen
  Mit Zitat antworten Zitat
fox67

Registriert seit: 6. Okt 2010
Ort: 72661 Grafenberg
181 Beiträge
 
Turbo Delphi für Win32
 
#6

AW: Indy TCP client empfangene Daten ausgeben

  Alt 15. Nov 2013, 12:44
hab ich auch schon probiert macht kein Unterschied das Programm reagiert nicht mehr sobald man connected
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.126 Beiträge
 
Delphi 10.3 Rio
 
#7

AW: Indy TCP client empfangene Daten ausgeben

  Alt 15. Nov 2013, 12:45
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...

Da gibt es ein OnConnect...
Und es gibt ein OnReceive... Was das wohl macht? Richtig, wird aufgerufen, wenn Daten vorliegen...

Ein Doppelklick enthüllt noch mehr...
Da wird übergeben wie viel übertragen wurde... Und ein Pointer...

Und das Memo?

Versuche mal:

Memo1.Lines.Add(MeinText);
Mavarik

Geändert von Mavarik (15. Nov 2013 um 12:48 Uhr)
  Mit Zitat antworten Zitat
stalkingwolf

Registriert seit: 6. Mai 2011
518 Beiträge
 
#8

AW: Indy TCP client empfangene Daten ausgeben

  Alt 15. Nov 2013, 12:50
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?

Geändert von stalkingwolf (15. Nov 2013 um 12:52 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von sh17
sh17

Registriert seit: 26. Okt 2005
Ort: Radebeul
1.594 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: Indy TCP client empfangene Daten ausgeben

  Alt 15. Nov 2013, 12:50
Keine direkte Antwort, aber vielleicht hilft es

http://sourceforge.net/projects/indy...urce=directory
Sven Harazim
--
  Mit Zitat antworten Zitat
fox67

Registriert seit: 6. Okt 2010
Ort: 72661 Grafenberg
181 Beiträge
 
Turbo Delphi für Win32
 
#10

AW: Indy TCP client empfangene Daten ausgeben

  Alt 15. Nov 2013, 12:55
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...

Da gibt es ein OnConnect...
Und es gibt ein OnReceive... Was das wohl macht? Richtig, wird aufgerufen, wenn Daten vorliegen...

Ein Doppelklick enthüllt noch mehr...
Da wird übergeben wie viel übertragen wurde... Und ein Pointer...

Und das Memo?

Versuche mal:

Memo1.Lines.Add(MeinText);
Mavarik
Nein ein OnReceive gibt es nicht. Und bei einem Doppelklick auf die Komponente komme ich auf OnConnect
  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 18:21 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