Entwickler-Ecke
Internet / Netzwerk - IndyTCPServer verwenden
Flamefire - Sa 15.08.09 15:11
Titel: IndyTCPServer verwenden
Ich habe eine Anwendung, die als proxy arbeiten soll.
Also habe ich einen IdTCPServer aufs Formular gepackt, und dem nen Port gegeben.
Im OnConnect verbinde ich in einem TThread eine IdTCPClient mit dem eigendlichen Server.
Das funktioniert soweit auch gut
Ich kann dort jetzt verbinden, trennen, daten empfangen und senden.
Nun will ich die gleiche Funktionalität für den IdServer. Ich weiß aber nun überhaupt nichts damit anzufangen.
Wie kriege ich ein Socket, an das Ich Daten senden kann? wie kann ich die verbindung trennen, bzw gucken, ob eine Verbindung besteht?
Muss ich einen Client erst Akzeptieren, oder macht Indy das automatisch?
Kann ich vl einfach den Client auf einen IdTCPClient akzeptieren und dann damit arbeiten?
Meine Idee jetzt war, in einem TThread statt IdTCPClient den AContext aus dem OnConnect zu verwenden, aber wird der nicht u.U. freigegeben, wenn der Client die verbindung verliert, wodurch ich auf ein freigegebenes Object versuchen würde zuzugreifen?
Xentar - Sa 15.08.09 15:22
Du hast dir immer noch nicht die Beispiele angeguckt, oder?
Der Indy Server macht für jeden verbundenen Client einen neuen Thread auf. Dieser Thread führt zyklisch das OnExecute Event aus. In diesem Event kannst ud dann die Daten abholen, welche hin senden, oder was auch immer.
Annehmen tut der die Verbindungen erstmal automatisch. Auch hierfür gibt es wieder ein Event, OnConnect, wo du irgendwas machen kannst.
Flamefire - Sa 15.08.09 16:11
ja gut das mit dem onexecute wusste ich ja
das problem ist eher das senden und verbindung trennen
EDIT: um meine Frage genauer zu stellen:
So wie ich das gesehen habe, habe ich im Server ein Array of Connections. Dort werden die verbindungen gehalten und verwaltet.
Ich nehme also an, dass wenn 3 verbindungen da sind (index 0-2) und die 2. wegfällt (index 1) dann habe ich noch die verbindungen 1 und 3 auf den plätzen 0-1, richtig?
Da ich nur eine Client verbindung zulassen möchte, habe ich jetzt eine class (TObject) geschrieben, die einen Context mitführt, statt dem IdClient
beim verbinden auf den server wird jetzt der context gesetzt
im onexecute wird aus dem context gelesen (egal was onexecute als param hat)
und im ondisconnect des context wird der context in der klasse auf nil gesetzt um zu zeigen, dass keine verbindung da ist.
sollte soweit doch richtig sein, oder?
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!