Hi Major,
jetzt bin ich auch ein wenig verwirrt.
Was hat den der Port 10 mit der obrigen Grafik zu tuen ?
Du möchtest den Server auf verschiedenen Ports laufen lassen ,
kein Problem dafür gibt es sogar mehrere Möglichkeiten :
1. Eine Anwendung, ein TIdTcpServer und über die Eigenschaft "Bindings" alle Ports hinzufügen,
auf denen der Server lauschen soll.
Das führt dazu das Du nur ein einen TIdTcpServer mit einem "OnExecute" hast,
indem Du allerdings dann die Ports der verschiedenen Clients unterscheiden musst.
2. Eine Anwwendung mehrere TIdTcpServer, für jeden Port der für die Clients offen sein soll einen Server,
dadurch gibt es auch für jeden port ein "eigenes" "OnExecute".
3. Mehrere Anwendungen bzw. eine Anwendung die mehrfach gestartet wird und je nach Configuration/Übergabe auf einem bestimmten Port läuft.
Bsp.: Der Server soll auf 3 Ports lauschen, dann wird Dein Program 3 x gestartet :
DeinServer.exe 44444 (diese Exe soll auf Port 44444 laufen)
DeinServer.exe 44445 (diese Exe soll auf Port 44445 laufen)
DeinServer.exe 44450 (diese Exe soll auf Port 44450 laufen)
In der Anwendung selber hat Du nur einen TIdTcpServer und nur ein OnExecute, den Port des Servers setzt Du beim Start der Anwendung.
Einfach wie jetzt hier im Bsp. die Eigenschaft "ParamStr" auslesen.
Ich würde Variante 3 wählen!
Übersichtlicher Code, Anzahl der Ports/Serverinstanz variabel und Du kannst im laufenden Betrieb einen Server "kicken"/neu starten
ohne das die Clients der anderen Server davon betroffen sind(das ist im Live Betrieb nachher viel Wert).
Zitat:
Der Client schickt über Port 10 etwas an Server - der Server erkennt den Port und führt den für diesen Port bestimmten Event aus. Das gleiche sollte auch für andere Ports gelten.
Weiter oben hast Du danach gefragt wie der Client den Port des Servers mit dem er gerade verbunden ist erkennt ....
Antwort:
IdTCPClient1.Socket.Binding.PeerPort
Jetzt möchtest Du wissen wie Du das dasselbe(Portunterscheidung) am Server machen kannst ?
AContext.Socket.Binding.PeerPort
Eigentlich sollte alles klar sein, sehe kein Problem bei der Umsetzung Deines Vorhabens.
Greetz Data
Der Horizont vieler Menschen ist ein Kreis mit Radius Null, und das nennen sie ihren Standpunkt.