Einzelnen Beitrag anzeigen

LokutusvB

Registriert seit: 18. Jul 2006
277 Beiträge
 
Delphi XE6 Enterprise
 
#1

TCP-Verbindung zu mehreren Endgeräten

  Alt 9. Feb 2018, 11:59
Moinsen,

ich habe in einem Netzwerk mehrere Geräte (Server), mit denen ich mich verbinden muß. Wird bei den Geräten ein Ereignis ausgelöst, sendet dieses Gerät einen String. Mit meinem programmierten Client kann ich diesen String auch empfangen und auswerten.

Für mein Testprogramm nutze ich Delphi XE6 und TIDTCPClient sowie TiDThreadComponent.

Ich verbinde mich mit dem Client zu einem Endgerät, setze idThreadComponent auf Active und im OnRun Ereignis der idThreadComponent führe ich ein IdTCPClient.IOHandler.ReadLn durch. Werden Daten gelesen, kann ich sie verarbeiten.

Soweit klappt alles wunderbar. Nun allerdings kommt das Problem. Ich habe fortan eine variable Anzahl von Endgeräten. Ich habe noch keine brauchbare Lösung finden können, wie ich mit vorgegebenen Mitteln von TCPClient und ThreadKomponent mich mit den Geräten verbinden kann und dann Daten von jedem Endgerät empfangen kann. Führe ich in der Run-Methode der ThreadKomponent ein ReadLn aus, wartet die Methode an der Stelle, bis das entsprechende Endgerät Daten liefert. Daten von anderen Endgeräten können in der Zeit nicht gelesen werden. Kann ich die Problematik überhaupt mit diesen beiden Indy-Komponenten lösen? wenn ja, wie ist der Ansatz?

Oder geht das nur über WindowsSockets und für jede Verbindung einen Thread starten der ständig ein WSAREcv ausführt?
MFG
LokutusvB
  Mit Zitat antworten Zitat