Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Probleme bei Umstellung von TClientSocket auf TIdTCPClient (https://www.delphipraxis.net/32083-probleme-bei-umstellung-von-tclientsocket-auf-tidtcpclient.html)

Kedariodakon 18. Okt 2004 14:06


Probleme bei Umstellung von TClientSocket auf TIdTCPClient
 
Möchte meine Anwendung die mit Hilfe der Socket-Komponenten läuft auf die Indy Komponenten umstellen!
Bei der Server-Anwendung gibt es keine Probleme, aber bei dem Client!
Der TClientSocket hat das Event OnRead, welches ja anschlägt, wenn Daten beim Client ankommen...
Aber beim TIdTCPClient kann ich nichts vergleichbares finden...

Gibts da sowas nicht?
Oder bin ich zu plöd? :wall:

Kedariodakon 18. Okt 2004 15:18

Re: Probleme bei Umstellung von TClientSocket auf TIdTCPClie
 
OK ich konnte folgende Sachen herrausbekommen:

Zitat:

Ein onRead Event beim TidTCPClient gibt es nicht, da man mit der methode read von der connection lesen kann...
Nur das das dauernt freezt bis die anzahl der Auszulesenen Byts erreicht ist :?:
Dann muß man noch mit einem Timer arbeiten, was ich als nicht schön ansehe...
Warum haben die Indy-Entwickler kein so ein Event eingebaut? Bei anderen Indy-Client Komponenten ist es ja scheinbar vorhanden :cry:

Aber man kann sich ein OnRead-Event selber schreiben, nur kein Plan wo ich da anfangen muß...
Hat das schon mal wer gemacht?

Ich weiß auch nicht ob ich das mit meinen Delphi Kenntnissen allein hinbekomm, da ich ja erst Anfänger bin :?

Kedariodakon 19. Okt 2004 08:23

Re: Probleme bei Umstellung von TClientSocket auf TIdTCPClie
 
Ok hab es gelöst, hab ein extra Thread zum lesen genommen...
DA meine Lösung:

Delphi-Quellcode:
Unit cTReadThread;

Interface


Uses IdTCPClient, Classes;


Type
   TOnReadEvent = Procedure ( TheTIdTCPClient: TIdTCPClient; AString: String ) Of Object;
   TReadThread = Class( TThread )
      Private
         { Private-Deklarationen }
      Protected
         { Protected-Deklarationen }
         FOnRead: TOnReadEvent;
         MyTIdTCPclient: TIdTCPClient;
      Public
         { Public-Deklarationen }
      Published
         { Published-Deklarationen }
         Constructor Create( CreateSuspendend: Boolean; TheTIdTCPClient: TIdTCPClient );
         Property OnRead: TOnReadEvent read FOnRead write FOnRead;
         Procedure Execute; Override;
   End;


Implementation


Constructor TReadThread.Create( CreateSuspendend: Boolean; TheTIdTCPClient: TIdTCPClient );
Begin
   Inherited Create( CreateSuspendend );
   MyTIdTCPclient := TheTIdTCPClient;
End;


Procedure TReadThread.Execute;
Begin
   While Not Terminated Do Begin
      If Assigned( FOnRead ) Then FOnRead(MyTIdTCPclient, MyTIdTCPclient.CurrentReadBuffer );
      //If Assigned( FOnRead ) Then FOnRead(MyTIdTCPclient, MyTIdTCPclient.ReadLn );
   End;
End;


end.
Bye

m0sch3r 25. Feb 2006 13:17

Re: Probleme bei Umstellung von TClientSocket auf TIdTCPClie
 
das sit darauf bezogen das der Client text empfängt, was ist aber wenn es auch eine detei ist, z.B stream...


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