Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi TCP - Daten von Server nach Client (https://www.delphipraxis.net/91922-tcp-daten-von-server-nach-client.html)

blablab 11. Mai 2007 23:24


TCP - Daten von Server nach Client
 
Hallo!

Ich hab mich nun entschieden 2 Computer mit dem TCP-Protokoll via der Indy-Komponenten IdTCPClient und IdTCPServer zu verbinden.
Bis jetzt hab ichs geschafft eine verbindung herzustellen. Jetzt habe ich allerdings ein Problem bei der Kommunikation zwischen CLient und Server.
Das Senden von Daten vom Client zum Server ist kein Problem, da es hier das Ereignis OnExecute gibt. Jedoch andersherum wirds schwierig...
Da gibts nähmlich kein OnExecute-Ereignis mehr und laut etlichen Internetseiten gibt es da nur die möglichkeit permanent nachzuschauen, ob der Server Daten gesendet hat. Dabei bleibt aber das Client-Programm stehen und deshalb gibts die AntiFreeze Komponente von Indy. Außerdem muss man dann noch das permante Abfragen ob neue Daten gekommen sind in einen extra Thread schreiben...

Ist das ganze ein schlechter Witz oder gibt es wirklich keine andere, schönere Lösung um Daten vom Server zum Client zu schicken???
Liegt das am TCP Protokoll, dass es nur so eine hässliche Lösung gibt, oder gibts noch eine andere Lösung???

Danke im Voraus!

Simon

richie 11. Mai 2007 23:36

Re: TCP - Daten von Server nach Client
 
Hi Simon,

Zitat:

Zitat von blablab
Ist das ganze ein schlechter Witz oder gibt es wirklich keine andere, schönere Lösung um Daten vom Server zum Client zu schicken???

Kein schlechter Witz.

Leite dir doch einen Thread ab, in dem dauernd nach neuen Daten nachgeschaut wird. Da wirst du nicht umhin kommen. Dann stellst du das Timeout auf nur 5 msec und baust ein Sleep ein, fertig! :)

Zitat:

Zitat von blablab
Liegt das am TCP Protokoll, dass es nur so eine hässliche Lösung gibt, oder gibts noch eine andere Lösung???

Das liegt nicht am Protokoll, da zum Beispiel der bei Delphi mitgelieferte TClientSocket das Event OnClientRead (oder so ähnlich) hat. Bei Indy gibt es aber nur diese eine Lösung (ich lass mich gern eines besseren belehren ...).

DataCool 13. Mai 2007 18:44

Re: TCP - Daten von Server nach Client
 
Hi,

der beschriebene Weg mit einem Thread ist der einzig richtige !

Und die bei Delphi mitgelieferten Client- und Serversocket Komponenten machen nichts anderes,
Sie erzeugen inden einen Thread der alle xyz Millisekunden schaut ob Daten da sind, und wenn ja wird mit den Daten das Ereignis "OnClientRead" ausgelöst.

Wenn Du einen Thread + Indy IdTpClient verwendest, brauchst Du kein TAntifreeze, allerdings muss Du innerhalb des Threads wenn Du auf VCL-GUI Elemente zugreifst bzw. diese änderst "TThread.syncronize" verwenden.

Gruß DataCool


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:41 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