AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

TCPClient Read

Ein Thema von Schuby · begonnen am 10. Jun 2021 · letzter Beitrag vom 13. Jun 2021
Antwort Antwort
Seite 1 von 2  1 2   
Schuby

Registriert seit: 25. Dez 2018
82 Beiträge
 
#1

TCPClient Read

  Alt 10. Jun 2021, 20:18
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
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
1.504 Beiträge
 
Delphi 10.3 Rio
 
#2

AW: TCPClient Read

  Alt 10. Jun 2021, 21:39
Kenne Indy nicht richtig. Aber da sollte es ein "Daten sind da" Event geben.
  Mit Zitat antworten Zitat
Schuby

Registriert seit: 25. Dez 2018
82 Beiträge
 
#3

AW: TCPClient Read

  Alt 10. Jun 2021, 21:46
Nein gibt es nicht jedenfalls ich finde nichts


mfg Schuby
  Mit Zitat antworten Zitat
Edelfix

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

AW: TCPClient Read

  Alt 11. Jun 2021, 09:05
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;
  Mit Zitat antworten Zitat
Schuby

Registriert seit: 25. Dez 2018
82 Beiträge
 
#5

AW: TCPClient Read

  Alt 11. Jun 2021, 16:25
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
  Mit Zitat antworten Zitat
Benutzerbild von Gandalf2265
Gandalf2265

Registriert seit: 24. Mai 2009
Ort: Laurenburg (Unterkante Westerwald)
14 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#6

AW: TCPClient Read

  Alt 11. Jun 2021, 20:24
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

Deshalb nehme ich lieber IPWorks (als Delphi-Edition in Delphi dabei). Da hat der Client ein Ereignis OnDataIn und liefert dabei Strings und Bytes.
Thorsten Maxeiner
allways change a running system
  Mit Zitat antworten Zitat
Michael II

Registriert seit: 1. Dez 2012
Ort: CH BE Eriswil
550 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: TCPClient Read

  Alt 11. Jun 2021, 21:15
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 hier.
In DP besprochen wurde es u.a. hier (Wenn der Server auch senden soll, dort unter #13).

- Du musst die Leitung nicht nach jedem Datenaustausch schliessen.
- Der Hauptthread wird nicht durch "Warten auf Daten" blockiert.
Michael Gasser
  Mit Zitat antworten Zitat
Schuby

Registriert seit: 25. Dez 2018
82 Beiträge
 
#8

AW: TCPClient Read

  Alt 13. Jun 2021, 16:41
Hallo Schuby,
ich nutze fast täglich ICS, dort gibt's dafür das Ereignis OnDataAvailable.

Hallo Michael, sorry das ich jetzt erst Antworte,
ich habe mir mal das ICS Installiert.

Gibt es da ein Demo ?


mfg Schuby
  Mit Zitat antworten Zitat
Michael II

Registriert seit: 1. Dez 2012
Ort: CH BE Eriswil
550 Beiträge
 
Delphi 10.4 Sydney
 
#9

AW: TCPClient Read

  Alt 13. Jun 2021, 19:52
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
Michael Gasser
  Mit Zitat antworten Zitat
Schuby

Registriert seit: 25. Dez 2018
82 Beiträge
 
#10

AW: TCPClient Read

  Alt 13. Jun 2021, 20:01
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
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 +2. Es ist jetzt 04:41 Uhr.
Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf