Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   ein Server, mehrere Clienten (Id/Indy) (https://www.delphipraxis.net/57963-ein-server-mehrere-clienten-id-indy.html)

Puhbaehr 29. Nov 2005 12:44


ein Server, mehrere Clienten (Id/Indy)
 
Hallo!

Ich schreibe bereits die ganze Zeit an einem Server-Client-Programm. Funktionieren tut alles bisher ohne Probleme. Allerdings habe ich bisher immer nur einen Clienten verbinden lassen und mir heut die Frage gestellt, was passiert wenn mehrere Clienten gleichzeitig verbinden?

Client und Server machen sich ja nach dem Verbinden untereinander einen Port aus auf dem sie kommunizieren. Jede Verbindung bekommt so ihre(n) eigenen Port(s). Soweit ist alles klar. Nur, muss ich den Teil des "untereinander ausmachen" übernehmen oder übernimmt das die Komponente selbständig?

Indy-Version: 9

Vielen Dank schonmal im Voraus!

Gruß, Robert

PS: Wenn mehr Infos gewünscht sind, bescheid geben...wollte nur nicht wieder zu viel Beispielcode und Erklärung geben (vielleicht reicht das ja) denn ich will nicht wieder jemanden mit meinen Romanen erschlagen :D

MarcoWarm 29. Nov 2005 13:11

Re: ein Server, mehrere Clienten (Id/Indy)
 
Das mit den Ports ist nicht ganz korrekt (im Standardfall eines TCP/IP Servers zumindest)

Du legst als Entwickler fest, über welchen Port Client und Server miteinander plaudern. Der
port wird nicht jedesmal neu zwischen den beiden "ausgemacht". Du kannst dich also getrost
mit mehreren Clients gleichzeitig verbinden. Indy kümmert sich um den Rest.

MisterNiceGuy 29. Nov 2005 13:41

Re: ein Server, mehrere Clienten (Id/Indy)
 
Guck dir unbedingt die Indy Chat Demo an, da steht das ganz genau drin wie du mehrere Clients mit einem Server verbindest.

Puhbaehr 29. Nov 2005 14:33

Re: ein Server, mehrere Clienten (Id/Indy)
 
Zitat:

Zitat von MisterNiceGuy
Guck dir unbedingt die Indy Chat Demo an, da steht das ganz genau drin wie du mehrere Clients mit einem Server verbindest.

Mach ich gleich mal.

Zitat:

Zitat von MarcoWarm
Das mit den Ports ist nicht ganz korrekt (im Standardfall eines TCP/IP Servers zumindest)

Du legst als Entwickler fest, über welchen Port Client und Server miteinander plaudern. Der
port wird nicht jedesmal neu zwischen den beiden "ausgemacht". Du kannst dich also getrost
mit mehreren Clients gleichzeitig verbinden. Indy kümmert sich um den Rest.

Ähm, also wie jetzt?
Ich leg z.B. fest Server horcht auf Port 7000.
Client sendet eine Anfrage von einem beliebigem Port X nach Port 7000 zum Server.
Der Server sendet wieder etwas von einem beliebigem Port Y zurück zu dem Port X des Clients und zwar die Nachricht, dass Zielport des Servers nun Port Y ist. Ab jetzt geschieht alles über diese beiden Ports bis...die Verbindung beendet wird.
Und Port X und Y werden (je nach Betriebssystem) mit jeder neuen Verbindung um eins erhöht. D.h. es würde der Client nach dem die Verbindung beendet wurde erneut beim Server auf Port 7000 anfragen...
So hab ich es zumindest bisher verstanden. :gruebel:

supermuckl 29. Nov 2005 15:24

Re: ein Server, mehrere Clienten (Id/Indy)
 
http://www.nickles.de/c/s/14-0005-112-10.htm
seite 10

Puhbaehr 29. Nov 2005 16:27

Re: ein Server, mehrere Clienten (Id/Indy)
 
Danke, hab mir jetzt nur Seite 10 angeschaut...nachdem sendet Client auf beliebigem Port an Server an Port 7000 und der Server von Port 7000 nach den Clientport zurück.

Gut, sobald Zeit ist werd ich mir noch den Rest anschauen. Also Danke vorerst!

Puhbaehr 30. Nov 2005 12:14

Re: ein Server, mehrere Clienten (Id/Indy)
 
Äh, Thema hat sich erledigt. Ich hab den Fehler gefunden.

Ich hab im ServerThread (OnExecute...) die Connection in einer Variablen der abgeleiteten Server-Klasse gespeichert :| Daran hatte ich gar nicht mehr gedacht, dass dann später mehrere Threads drauf zugreifen. Jetzt ist alles klar...

Also danke für die Hinweise!
Aufgefallen ist mir das übrigens nachdem ich das Beispiel mit dem Chat angeschaut hab und danach wieder bei meinem weiter gemacht hab...

:wall:

Gruß, Robert


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