![]() |
TCPClient Read
Hallo, ich übe mich gerade in TCPClient.
Daten senden und Daten zurück bekommen ist kein Problem wenn sie gleich zurück kommen. Muss ich aber warten bekomme ich ein error Gibt es bei TCPClient etwas bevor ich Daten abhole das ich prüfen kann ob Daten überhaupt zum abholen da sind.? Ich hatte schon etwas wie TCPClient.IOHandler.WaitForData gelesen, aber bei meiner Indy version kann ich nur Form1.TCPClient.IOHandler.WaitFor(...) Vorher hatte ich eine Serielle, da war das kein Probelm mit ComPort1RxChar(Sender: TObject; Count: Integer); mfg Schuby |
AW: TCPClient Read
Kenne Indy nicht richtig. Aber da sollte es ein "Daten sind da" Event geben.
|
AW: TCPClient Read
Nein gibt es nicht jedenfalls ich finde nichts
mfg Schuby |
AW: TCPClient Read
Machst du das so in der Art?
Delphi-Quellcode:
function TDataModule1.Test:String;
var sAntwort: String; begin IdTCPClient1.Connect; if IdTCPClient1.Connected then begin IdTCPClient1.IOHandler.WriteLn('StartSend') sAntwort := IdTCPClient1.IOHandler.ReadLn; Result := sAntwort; end; IdTCPClient1.Disconnect; end; |
AW: TCPClient Read
Hallo, ich hole erst das ReadWord ab, da sitzt mein Längen byte,
danach die Byte´s
Delphi-Quellcode:
//****************************************************************************** function RcvByte : Byte; begin Result := Form1.TCPClient.IOHandler.ReadByte; end; //****************************************************************************** function RcvWord : word; begin Result := Form1.TCPClient.IOHandler.ReadWord( FALSE ); end; mfg Schuby |
AW: TCPClient Read
Bei Indy bleibt glaube ich wohl nur
- zyklisches Lesen mit gesetztem ReadTimeout - eigenen Thread bauen der blockierend wartet und wenn da dann Daten liefert - im HauptThread warten :cry: Deshalb nehme ich lieber IPWorks (als Delphi-Edition in Delphi dabei). Da hat der Client ein Ereignis OnDataIn und liefert dabei Strings und Bytes. |
AW: TCPClient Read
Hallo Schuby,
ich nutze fast täglich ICS, dort gibt's dafür das Ereignis OnDataAvailable. Aber jetzt zu Indy. Ein sehr gutes Client-Server Beispiel für das, was du suchst findest du zum Glück immer noch ![]() In DP besprochen wurde es u.a. ![]() - Du musst die Leitung nicht nach jedem Datenaustausch schliessen. - Der Hauptthread wird nicht durch "Warten auf Daten" blockiert. |
AW: TCPClient Read
Zitat:
Hallo Michael, sorry das ich jetzt erst Antworte, ich habe mir mal das ICS Installiert. Gibt es da ein Demo ? mfg Schuby |
AW: TCPClient Read
Hallo Schuby
es gibt viele Beispielanwendungen, welche mit ICS installiert werden. Du findest die Beispiele dort wo du ICS installiert hast unter Samples\Delphi. Wenn du aber bereits mit ICS begonnen hast, dann schau dir doch mal das Beispiel in #7 an. Dort wird gezeigt, wie du mit Indy zwischen zwei Programmen Daten austauschst - ohne blockierendes Warten auf Daten, ohne die Verbindung nach jedem Datenpaket schliessen zu müssen. Gruss Michael |
AW: TCPClient Read
Hallo Michael,
die Demos habe ich gefunden. Aber ein Demo wie TCPClient von Indy habe ich noch nicht gefunden. Du Schreibst ich solle mir das Beispiel #7 anschauen.? Das suche ich jetzt mfg Schuby |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:20 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