Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi TCPClient OnReceive Ereigniss (https://www.delphipraxis.net/49536-tcpclient-onreceive-ereigniss.html)

Selecta 12. Jul 2005 16:09


TCPClient OnReceive Ereigniss
 
Hallo miteinander

Bei der TCPClient Komponente gibt es ja das Ereigniss OnRecieve.
Das Ereigniss wird bei mir aber nicht ausgelöst.

Wenn ich mit TCPClient.Recieveln() auslese, bekomme ich Daten zurück.
Die Daten kommen also an.

Weiss jemand wieso es nicht ausgelöst wird??

Gruss und danke

Selecta

marabu 12. Jul 2005 16:26

Re: TCPClient OnRecieve Ereigniss
 
Hallo Selecta,

wenn du mit Indy 9 arbeitest, dann könnte dieser Beitrag die Erklärung liefern.

Grüße vom marabu

Selecta 12. Jul 2005 16:39

Re: TCPClient OnRecieve Ereigniss
 
sali marabu

Nein ich brauche die Indy Komponente nicht ("noch nicht"). Habs jetzt mal nur mit dem TCPClient gemacht.

Wenn ich deinen Post richtig verstehe, ist das ein Ereigniss, dass zwar aufgeführt ist, aber eigentlich gar nichts macht? o_O

Könnte man sonst irgendwie ein Ereigniss (Interupt) auslösen, wenn Daten empfangen wurden?

marabu 12. Jul 2005 16:53

Re: TCPClient OnRecieve Ereigniss
 
Der andere Beitrag handelte zwar von der HTTPClient-Komponente, aber die Ereignisse OnReceive() und OnSend() werden in TCPClient deklariert - HTTPClient ist von TCPClient abgeleitet. Wenn du die Quellen hast, kannst du das leicht ändern - denke ich.

marabu

Selecta 12. Jul 2005 17:07

Re: TCPClient OnRecieve Ereigniss
 
sry, aber ich kann dir leider nicht ganz folgen...

Waldteufel 12. Jul 2005 17:29

Re: TCPClient OnRecieve Ereigniss
 
Hi Selecta.

Umformulierung von Marabus Beitrag:
Es gibt eine Ereignis-Property OnReceive bzw OnSend, aber im Quellcode von TCPClient wird beim Senden/Empfangen nie dieses Ereignis ausgelöst. Wenn du den Indy-Quellcode hast, kannst du ihn aber so abändern, dass das Ereignis ausgelöst wird.

Verständlicher?

Selecta 12. Jul 2005 17:31

Re: TCPClient OnRecieve Ereigniss
 
und wie!

danke :)

ich schaus mir mal an

marabu 12. Jul 2005 17:37

Re: TCPClient OnRecieve Ereigniss
 
Hallo Selecta,

habe nochmal im Quelltext geforscht. TCPClient hat keine Methode ReceiveIn(). Welche Komponente verwendest du? Welche Delphi Version?

Die Methoden Receive() und Send() sind bei Indy 9 in den Intercept-Komponenten deklariert, nicht wie oben von mir geschrieben in TCPClient. Das Ereignis OnReceive() wird von der Komponente IdCompressionIntercept ausgeschaltet, im Basistyp wird es korrekt bedient.

marabu

Waldteufel 12. Jul 2005 17:39

Re: TCPClient OnRecieve Ereigniss
 
Hi Selecta.

Zwischenfrage: Benutzt du überhaupt die Indy-Komponenten? :gruebel:

nailor 12. Jul 2005 17:42

Re: TCPClient OnRecieve Ereigniss
 
Zitat:

Zitat von Selecta
sali marabu

Nein ich brauche die Indy Komponente nicht ("noch nicht"). Habs jetzt mal nur mit dem TCPClient gemacht.

anscheinend nicht.

Waldteufel 12. Jul 2005 17:50

Re: TCPClient OnRecieve Ereigniss
 
Hi.

Quellcode
for i := 1 to 100 do :wall:;


Natürlich... Die Socket-Komponente... :wall:

PS: Hab mal kurz im Source gestöbert. Das Ereignis müsste eigentlich aufgerufen werden... :gruebel:

marabu 12. Jul 2005 17:51

Re: TCPClient OnRecieve Ereigniss
 
Schaut mal alle weg - dann lösche ich schnell meine Beiträge in diesem thread...

marabu

PS: Das Ereignis OnReceive() der BaseSocket-Komponente wird laut Quelltext korrekt bedient.

Selecta 13. Jul 2005 09:43

Re: TCPClient OnReceive Ereigniss
 
guten morgen

Genau die Socket-Komponente.

Wird das Ereignis erst nach einem Lesen-Befehl abgearbeitet?
Habe gerade gesehen, dass das Ereigniss nach einem Receiveln() bearbeitet wird...
Eigentlich sollte es wenn Daten angekommen sind, ausgelöst werden?
Oder ist das nur eine Art Eingangsbehandlungsroutine der Daten, die der Socket jeweils empfangen hat?

:hi:

marabu 13. Jul 2005 09:54

Re: TCPClient OnReceive Ereigniss
 
Hallo Selecta,

OnReceive() wird nach dem erfolgreichen Empfang der Daten aufgerufen, damit du deinen magic code darauf wirken lassen kannst.

marabu

Selecta 13. Jul 2005 10:11

Re: TCPClient OnReceive Ereigniss
 
Sali marabu

Was verstehst du genau unter dem erfolgreichen Empfang der Daten?

Sry, aber hatte nie Netzwerktechnik ;)

marabu 13. Jul 2005 10:27

Re: TCPClient OnReceive Ereigniss
 
Die von der Komponente gekapselte function recv() aus der WinSocket library wird zuerst aufgerufen, danach stehen die Daten im buffer bereit. Damit du jetzt zum Beispiel Kompression bzw. Dekompression behandeln kannst, bekommst du im event handler eine Chance - aber nur wenn es keinen Netzwerkfehler gab.

marabu

Selecta 13. Jul 2005 12:01

Re: TCPClient OnReceive Ereigniss
 
ah ok

Es liegt ein Fehler an. :stupid:
Gibt es in der OH eine Legende mit den Fehlercodes?


Danke vielmals für die Hilfe marabu

marabu 13. Jul 2005 12:07

Re: TCPClient OnReceive Ereigniss
 
Du hast doch die Quelle von WINSOCK.PAS, suche da mal nach WSABASEERROR. Da solltest du alles finden was du brauchst.

Oder schau mal hier rein.

marabu

Matrix Scripter 2. Aug 2007 14:35

Re: TCPClient OnReceive Ereigniss
 
hallo, ich verwende auch ttcpclient und bei mir wird das OnReceive event auch nicht ausgelöst.
aber tcpclient1.Receiveln komm ich an die empfangenen daten ran.
aber warum onreceive nicht ausgelöst wird habe ich leider immernoch nicht verstanden. könnte mir das jemand erklären?

mfG matrix scripter


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