AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Wie findet der Client seinen Server?
Thema durchsuchen
Ansicht
Themen-Optionen

Wie findet der Client seinen Server?

Ein Thema von Jumpy · begonnen am 3. Apr 2013 · letzter Beitrag vom 23. Jul 2013
Antwort Antwort
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.739 Beiträge
 
Delphi 6 Enterprise
 
#1

Wie findet der Client seinen Server?

  Alt 3. Apr 2013, 15:15
Hallo,

ich schreibe gerade ein Programm, das sowohl als Server als auch als Client arbeitet. Der erste der das Programm startet soll es als Server starten, alle späteren als Client, die sich mit dem Server verbinden.

Ähnlich wie es bei Spielen wie CS ist, wo einer einen Server "aufmacht" mit dem sich die anderen Spieler dann verbinden.

Wie macht man das, das die Clients den Server finden? Der kann ja immer auf einem anderen Rechner gerade laufen?
Ralph
  Mit Zitat antworten Zitat
RedOne

Registriert seit: 2. Jun 2008
71 Beiträge
 
Delphi XE2 Professional
 
#2

AW: Wie findet der Client seinen Server?

  Alt 3. Apr 2013, 15:22
Mache einen Broadcast (an IP 255.255.255.255). Dann wird eine Message an alle PC's versandt. Der Server meldet sich dann zurück und schon weisst Du, wo der Server liegt.
Wenn das ganze aber übers Internet läuft, dann brauchst Du einen "Masterserver", bei dem sich die einzelnen Server registrieren müssen.
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.010 Beiträge
 
Delphi 2009 Professional
 
#3

AW: Wie findet der Client seinen Server?

  Alt 3. Apr 2013, 15:32
Der Server macht einen UDP Broadcast, alle Clients erhalten dann seine Nachricht.

In der Nachricht kann der Server seinen Hostnamen angeben, unter dem die Clients ihn erreichen.

Wie die Clients UDP (IP Multicast als Beispiel eines Broadcast) verwenden können, habe ich hier beschrieben:

Discover ActiveMQ brokers with Delphi and IP Multicast

Was noch fehlt ist der Code der vom Server aus UDP Broadcasts versendet, das sollte aber mit Indy leicht sein.
Michael Justin
  Mit Zitat antworten Zitat
Benutzerbild von BUG
BUG

Registriert seit: 4. Dez 2003
Ort: Cottbus
2.094 Beiträge
 
#4

AW: Wie findet der Client seinen Server?

  Alt 3. Apr 2013, 15:33
Hier gibt es im Grunde 2 Möglichkeiten:

Broadcasten (über UDP):
Hier ruft entweder der Server ständig ins Netz oder die Clients fragen nach, wenn der Server gesucht wird. Dies funktioniert nur in lokalen Netzen ((W)LAN).

Anfragen an eine wohlbekannte Adresse:
Du fragst das DNS (DynDNS) oder betreibst selbst einen Server unter wohlbekannter Adresse, bei dem sich die richtigen Server anmelden können.


Wenn du selbst keinerlei Infrastruktur betreiben möchtest, funktioniert nur das erste.
Mit ein bisschen Einarbeitung könntest du zB. kostenlos die Google App Engine nutzen, um Server zu verwalten.
Intellekt ist das Verstehen von Wissen. Verstehen ist der wahre Pfad zu Einsicht. Einsicht ist der Schlüssel zu allem.
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.739 Beiträge
 
Delphi 6 Enterprise
 
#5

AW: Wie findet der Client seinen Server?

  Alt 3. Apr 2013, 15:53
Das ganze soll nur innerhalb eines LANs stattfinden, also reicht mir eine einfache Variante.
Bei der "Server broadcasted per UDP"-Variante. Wie oft macht der das? Erzeuge ich nicht so unnötige Netzwerklast?

Broadcasten (über UDP):
... oder die Clients fragen nach, wenn der Server gesucht wird. Dies funktioniert nur in lokalen Netzen ((W)LAN).
Wie würde ich das genau umsetzen? Mit welchen Komponenten? Ich hab meine Client-Server-Geschichten bisher immer mit den Socket-Komponenten gebaut, die bei Delphi dabei sind. Das waren aber immer fälle, wo die IP des Servers bekannt war oder aus einer Datenbank oder Ini gelesen wurden.
Ralph

Geändert von Jumpy ( 3. Apr 2013 um 15:59 Uhr)
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.010 Beiträge
 
Delphi 2009 Professional
 
#6

AW: Wie findet der Client seinen Server?

  Alt 3. Apr 2013, 16:07
Das ganze soll nur innerhalb eines LANs stattfinden, also reicht mir eine einfache Variante.
Bei der "Server broadcasted per UDP"-Variante. Wie oft macht der das? Erzeuge ich nicht so unnötige Netzwerklast?
Das ideale Intervall ist natürlich anwendungsabhängig. Der ActiveMQ Server sendet zirka im Sekundentakt, das UDP Paket ist nur wenige Bytes lang. Das wird die Trafficabrechnung kaum erhöhen
Michael Justin
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#7

AW: Wie findet der Client seinen Server?

  Alt 3. Apr 2013, 16:28
Ich würde trotzdem die "Client broadcastet, Server antwortet" Lösung empfehlen.

Zur Umsetzung: Du kannst den TIdUDPServer + TIDUDPClient hernehmen, damit sollte sich was basteln lassen. und für die richtige Kommunikation wäre dann TCP angebracht.
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.010 Beiträge
 
Delphi 2009 Professional
 
#8

AW: Wie findet der Client seinen Server?

  Alt 3. Apr 2013, 16:50
Ich würde trotzdem die "Client broadcastet, Server antwortet" Lösung empfehlen.
Die Netzwerklast wird damit proportional zur Anzahl Clients steigen. Auch wird der Server entsprechend zur Anzahl Clients entsprechend mehr Last zur Beantwortung der Broadcasts verursachen, während bei Server-Broadcast die Serverlast unabhängig von der Anzahl Clients ist. (Angenommen, wir hätten eine Umgebung mit einer relevanten Anzahl Clients, nicht nur zwei oder drei...). Wo ist der Vorteil gegenüber einem Server-Broadcast?
Michael Justin
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:53 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz