Autor Beitrag
avenger
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 90



BeitragVerfasst: Mi 17.03.10 01:56 
Hallo,

Kann mir mal jemand genau erklaeren wie man mit den Indys einen StringStream empafangen kann ? Ich moechte von einer anderen Anwenung ein Telegramm empfangen in dem das erste Byte Laenge enthaelt und die darauffolgenden die Nachricht. Ich hoffe das ich hier mit StringStream auf dem richtigen weg bin. Brauche ich dazu das OnNoCommandHandler event ? Ich nutze Delhphi 7 und die Indy 9 Komponenten.
avenger Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 90



BeitragVerfasst: Fr 19.03.10 20:26 
Keiner ????
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Sa 20.03.10 12:11 
Einfach mit SendStream raussenden. Mehr steht bei Narses in den Tutorials drinnen (wie das bzgl. Versand von Strings geht).

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
avenger Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 90



BeitragVerfasst: Sa 20.03.10 14:53 
user profile iconBenBE hat folgendes geschrieben Zum zitierten Posting springen:
Einfach mit SendStream raussenden. Mehr steht bei Narses in den Tutorials drinnen (wie das bzgl. Versand von Strings geht).


Ja das hab ich ja schon, mir geht es eher ums empfangen. Brauch ich einen Command Handler, oder geht das mit dem OnNoCommandHAnler ?
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Sa 20.03.10 16:07 
Wenn Du das Byteweise selber auswertest, kannst Du das durchaus selber machen. Ist, wie man bei Narses in den Tuts sieht, ja nicht soo schwer ...

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
avenger Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 90



BeitragVerfasst: Sa 20.03.10 16:20 
Also ich sehe nur das narses tutorials ueber sockets sind und nicht ueber Indy. Das es da parallelen gibt ist mir schon klar. Ich habe nie etwas mit sockets gemacht und in den Indy Tutorials steht das man alles uber sockets vergessen soll wenn man mit Indy arbeiten will. Ich wuerde auch nicht mittlerweile zum 3ten mal daemlich fragen wenn ich es finden wuerde, aber ich finds leider nicht. Ich weiss nicht in welchem ereignis ich den Stringstream (mit dem Indy Server) ueberhaupt empfangen kann. Dachte mir bei OnNoCommandHandler aber da komm ich nicht wirklich weiter. Normale Strings kann ich mit OnNoCommandHandler empfangen aber (nun zum vierten mal) ich weiss nicht wie ich es mit einem StringStream anstellen soll, und da hilft mir narses tutorial uber die Sockets auch nicht weiter.

(Byteweise auswerten kann ich auch erst wenn ich das ereignis weiss das ausgefuehrt wird wenn der Server einen StringStream geschickt bekommt)
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Sa 20.03.10 17:31 
Ich meinte auch speziell den Teil, wo Narses die Erklärung für das Protokoll vorstellt. Dass Sockets und Indy etwa soviele Gemeinsamkeiten wie Rindergulasch und Marmelade aufweisen, ist mir klar. Hab bisher nur mit den Indies nur noch nicht viel gemacht.

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
avenger Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 90



BeitragVerfasst: Sa 20.03.10 17:44 
Ich glaube nun das das gar nicht mit den server ereignissen geht. Habe nun mal ein bissjen nach den IO Handlern gesucht und da gibt es ja den Stream IO Handler. Diesen kann man aber leider nur einem TCP Client zuweisen und nicht einem TCP Server.

Ich habe eine andere Anwendung die einen StringStream schickt (Sie ist aber der client und verbindet sich auch mit meinem INDY Server). Kann mein Indy Server ueberhaupt einen Stream von einem Client empfangen ?

Dachte mir das ich das ganze so geht:

Server wartet auf Verbindung > client verbindet sich > Client sendet Stream waehrend Server Stream empfaengt > dann beendet cleint die Verbindung ?????
Xentar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2077
Erhaltene Danke: 2

Win XP
Delphi 5 Ent., Delphi 2007 Prof
BeitragVerfasst: Sa 20.03.10 17:53 
Ich selber hab eigentlich noch nie mit CommandHandlern oder sowas von Indy gearbeitet..
Bisher hab immer nur OnExecute verwendet, und da die Daten selber abgeholt und verarbeitet. Geht ohne Probleme, wenn man weiß, was man tut (Stichwort Threading!).
Damit kannst du empfangen, was du willst - musst dich nur selber drum kümmern.
Wie das genau geht: Siehe Indy Demos, da ist ein TCP Server Beispiel bei.

_________________
PROGRAMMER: A device for converting coffee into software.
avenger Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 90



BeitragVerfasst: Sa 20.03.10 18:35 
user profile iconXentar hat folgendes geschrieben Zum zitierten Posting springen:
Ich selber hab eigentlich noch nie mit CommandHandlern oder sowas von Indy gearbeitet..
Bisher hab immer nur OnExecute verwendet, und da die Daten selber abgeholt und verarbeitet. Geht ohne Probleme, wenn man weiß, was man tut (Stichwort Threading!).
Damit kannst du empfangen, was du willst - musst dich nur selber drum kümmern.
Wie das genau geht: Siehe Indy Demos, da ist ein TCP Server Beispiel bei.


danke fuer den tipp. Wann wird on execute ausgefuehrt ? Bei mir wird on execute nicht getriggert wenn der Stream gesendet wird !
Xentar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2077
Erhaltene Danke: 2

Win XP
Delphi 5 Ent., Delphi 2007 Prof
BeitragVerfasst: Sa 20.03.10 18:43 
OnExecute wird zyklisch ausgeführt, wenn ein Client verbunden ist - egal, ob der was sendet oder nicht.
Jeder Client hat einen eigenen Thread, der immer im Kreis rennt.

Warum das bei dir nicht der Fall ist, kann ich grade nicht sagen..

_________________
PROGRAMMER: A device for converting coffee into software.
avenger Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 90



BeitragVerfasst: Sa 20.03.10 19:46 
user profile iconXentar hat folgendes geschrieben Zum zitierten Posting springen:
Warum das bei dir nicht der Fall ist, kann ich grade nicht sagen..

Naja zumindest das hab ich jetzt raus. CommandHandlersEnabled muss auf False gesetzt sein damit on Execute ausgefuehrt wird.

---Moderiert von user profile iconNarses: Beiträge zusammengefasst---

So habs endlich raus. Geht also tatsaechlich mit dem OnExecute event. Dafuer muessen jedoch alle Command Handler abgeschaltet werden.

Problem geloest, Danke !!!
Yogu
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2598
Erhaltene Danke: 156

Ubuntu 13.04, Win 7
C# (VS 2013)
BeitragVerfasst: Sa 20.03.10 20:37 
Bitte markiere deine Frage als erledigt, damit Hilfestellende sofort sehen, dass sie das Thema nicht durchlesen müssen. Klicke dazu einfach auf user defined image oberhalb des ersten Postings. Danke! :)