Servererkennung im lokalen Netzwerk

  • C#

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von Markus Jacobs.

    Servererkennung im lokalen Netzwerk

    Hallo,

    bei Lan Spielen findet man das doch immer wieder:
    Man bekommt ne Serverliste mit allen vefügbaren Servern im lokalen Netzwerk. Doch wie funktioniert das genau?
    Wenn man über das Internet spielt weiß ich wie das funktioniert. Der Client verbindet sich mit einem Masterserver und bekommt von dem alle Server zugesendet.
    Jedoch wie funktioniert das im lokalen Netzwerk... ?

    Kann mir da jemand helfen?
    Ich hab mich schonmal ein wenig informiert, das ganze geht anscheinend nur über UDP und einer Broadcast IP Addresse oder so etwas in der Art.... Genaueres ist mir aber noch nicht bekannt.

    Danke im Voraus
    Ein Broadcast um einen Dienst auf seine erreichbarkeit zu validieren könnte wie folgt gehen:
    dotnet-snippets.de/snippet/broadcast-senden/567

    Markus Jacobs schrieb:

    Ich hab mich schonmal ein wenig informiert, das ganze geht anscheinend nur über UDP und einer Broadcast IP Addresse oder so etwas in der Art.... Genaueres ist mir aber noch nicht bekannt.


    Viele Wege führen nach Rom, wer sagt denn dass es zwangsläufig nur über das Layer 4 Protokoll UDP gehen "kann"? ;)

    Und im übrigen, gibt es unter IPv6 z.B. keine Broadcast-Adresse, da wird das ganze dann über eine Multicast-Adresse gelöst *Blick in die baldige Zukunft*.
    Nein, bloß nicht.
    Es reicht wenn du einmal ein Paket an den jeweiligen Host sendest, und daraufhin die Antwort abwartest. Wenn du eine Antwort hast, weißt du dass der jeweilige Host erreichbar ist. Das kannst du gern in einigen Abständen wiederholen. Aber einen Host mit Broadcast-Responses zu beschäftigen, sehe ich nicht als eine feine Lösung.

    Wenn du eine Anfrage auf die limited Broadcast-Adresse eines Netzes sendest, antworten dir alle Hosts innerhalb des Netzes, weil die Broadcast-Anfrage für jeden Host bestimmt ist (Siehe Definition von Broadcast-Adresse - de.wikipedia.org/wiki/Broadcast)

    Eine ganz andere Sache die ich vielleicht doch noch einmal ansprechen müsste, ist den Unterschied zwischen TCP und UDP.
    Dieser sollte bei der Verwendung von UDP bekannt sein.

    UDP ist ein verbindungsloses Protokoll, wohingegen TCP ein verbindungsorientiertes Protokoll ist.

    Heißt? Bei UDP weißt du nicht, ob deine versendeten Pakete am Ziel zwangsläufig so ankommen, wie sie versendet wurden. Da eine Prüfung dessen nicht unternommen wird, es kann auch durchaus dazu kommen, dass der Sender gar nicht mitbekommt, dass seine Pakete gar nicht am Ziel angekommen sind.

    Ebenfalls gibt es unter UDP keine Sequenznummern, die die Reihenfolge der Pakete nummerisch bestimmen.

    Für eine Validierung ob eine Anwendung auf einem Host erreichbar ist auf dem OSI-Layer 4 ist das ausreichend. Alles andere würde ich nur mit Vorsicht genießen wollen.
    Hallo,

    ich habe mich jetz mal an einem umfangreicheren Projekt (für mich) probiert, allerdings funktioniert das alles nicht so wie ich mir das vorstelle.

    Server und Client starten zwar, man kann sich auch verbinden, aber sobald ich zum Beispiel vom Client aus disconnecten und wieder connected möchte stürzt alles irgendwie ab.

    Könnte da vielleicht mal jemand drüber schauen wenn ihr Zeit habt?

    HIER DL PROJEKT

    Das wäre seehhr nett.