![]() |
Indy TCP client empfangene Daten ausgeben
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 ![]()
Delphi-Quellcode:
Ich habe es so probiert aber das funktioniert leider nicht. Ich vermute weil Delphi wartet bis das Senden gestoppt wird.
procedure TForm1.Button1Click(Sender: TObject);
begin IdTCPClient1.Connect; try memo1.Lines.Text :=IdTCPClient1.ReadChar; finally IdTCPClient1.Disconnect; end; end; |
AW: Indy TCP client empfangene Daten ausgeben
hmm
Wieviele Zeichen werden den von .ReadChar gelesen? Nee Idee? Und ist zu diesem Zeitpunkt den die Connection überhaupt schon etabliert? Mavarik |
AW: Indy TCP client empfangene Daten ausgeben
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
Delphi-Quellcode:
?
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. |
AW: Indy TCP client empfangene Daten ausgeben
Ich will nur Empfangen und ausgeben
|
AW: Indy TCP client empfangene Daten ausgeben
Mit readln sollte es gehen
|
AW: Indy TCP client empfangene Daten ausgeben
hab ich auch schon probiert macht kein Unterschied das Programm reagiert nicht mehr sobald man connected
|
AW: Indy TCP client empfangene Daten ausgeben
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:
Delphi-Quellcode:
Memo1.Lines.Add(MeinText);
Mavarik |
AW: Indy TCP client empfangene Daten ausgeben
Ich benutze selber immer noch einen TThread der sich um das Thema kümmert, damit die Hauptanwendung nicht blockiert wird.
Delphi-Quellcode:
und beim connecten auf den Server
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;
Delphi-Quellcode:
Woher kommen die Daten denn?
ClientHandleThread := TClientHandleThread.Create(True);
ClientHandleThread.FreeOnTerminate := True; ClientHandleThread.Resume; |
AW: Indy TCP client empfangene Daten ausgeben
Keine direkte Antwort, aber vielleicht hilft es
![]() |
AW: Indy TCP client empfangene Daten ausgeben
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:14 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