Generelle Fragen zur client-server-Programmierung...

23/10/2008 - 16:06 von Oliver Bleckmann | Report spam
Ich habe mich gerade mit meinem Bruder über Client- Server- Programmierung
unterhalten, dabei ist mir aufgefallen, daß ich gar nicht so recht weiß, wie
ich hier vorgehen würde...

Ausgangspunkt ist eine Server-Client-Anwendung, die nur im lokalen LAN,
nicht aber über das Internet funktioniert. Das Problem ist die IP der
Clients festzustellen (mal abgesehen davon, daß sie obendrein dynamisch
ist), beim Server kommen wohl immer nur Pakete mit der internen (LAN)
Router-IP an.

Hier mal die Fragen:
Er programmiert mit dem Windows Communication Foundation Framwork, bzw.
diesem Message- Konzepts (ich mache kein VB), daher die Fragen:

Wie funktioniert das jetzt (auch technisch) wenn ich eine Serveranwendung
programmiere, die nur auf einem Port lauscht, auf dem sich mehrere Clients
verbinden können - wie werden die Clients unterschieden?
Oder anders gesagt, wie funktionieren Sockets, macht das WCF das
automatisch?
Muß der Router hierfür geeignet sein? Kann es ein Konfigurationsfehler sein,
Stichwort "geroutetes Subnetz"? Ob das also auch noch eine Providersache
ist!? Auf Anraten von Netgear hat die Firma schon einen neuen "fàhigen"
Router gekauft!?
Was mir noch in den Sinn gekommen ist (siehe Peer-to-Peer-Netzwerke), ob es
nicht besser ist, für jeden Client einen eigenen Port zu verwenden!?
Auch hier die Frage, wie geht das technisch, erinnere mich dunkel an
Experimente mit Telnet und passivem ftp, wo man einen Port für den
Datenaustausch vom Server bekommt. Kommentare zu der Lösung?
Naja, lange Rede, kurzer Sinn, ein verstàndlich gehaltenen Link zum Thema
Hardware und Implementation wàre nett.

Danke,
Gruß, Olli.
 

Lesen sie die antworten

#1 Christoph Herrmann
23/10/2008 - 16:40 | Warnen spam
Oliver Bleckmann schrieb:
Ausgangspunkt ist eine Server-Client-Anwendung, die nur im lokalen LAN,
nicht aber über das Internet funktioniert. Das Problem ist die IP der
Clients festzustellen (mal abgesehen davon, daß sie obendrein dynamisch
ist), beim Server kommen wohl immer nur Pakete mit der internen (LAN)
Router-IP an.



Ob LAN oder Internet ist relativ egal. Die IP der Clients solltest du
nicht versuchen festzustellen. Die Clients verbinden sich zum Server und
somit weiß der Server dann die IP Adresse vom Client bzw. hat eine
aktive Verbindung. Ob und welche Pakete beim Server ankommen ist nicht
das Problem der Anwendung, sondern des Netzwerks und der Firewall.

Wie funktioniert das jetzt (auch technisch) wenn ich eine Serveranwendung
programmiere, die nur auf einem Port lauscht, auf dem sich mehrere Clients
verbinden können - wie werden die Clients unterschieden?



In der Regel lauscht der Server auf einem Port wie du schon erkannt hast
und immer wenn sich ein Client mit dem Server verbindet bekommt der
Server ein Objekt der Verbindung, übergibt dies an einen eigenen Thread
für die Verarbeitung und lauscht weiterhin nach neuen Clients. So können
mehrere Clients gleichzeitig bedient werden durch mehrere Threads.

Was mir noch in den Sinn gekommen ist (siehe Peer-to-Peer-Netzwerke), ob es
nicht besser ist, für jeden Client einen eigenen Port zu verwenden!?



Ich wüsste keinen Vorteil dadurch, nur der Nachteil, dass der Client
irgendwie mitbekommen muss welchen Port er nehmen soll...

Jetzt nur ganz grob die Vorgehensweise, den Rest überlasse ich den
Experten. :)


Mit freundlichen Grüßen,
Christoph Herrmann

http://dragonprojects.de/

Ähnliche fragen