Netzwerksuche



  • Hi

    ich möchte eine Netzwerksuche, wie sie in einigen spielen der Fall ist erstellen. In den Spielen kann einer dann im Lan ein spiel erstellen, dann können die anderen nach einem Spiel suchen und bekommen es gegenfalls angezeigt.

    Das Problem ist, dass ich mich nur gering mit Netzwerkprogrammierung auskenne. Kenne die Protokolle und ein paar Grundlagen. Bin aber lernwillig.

    So meine Fragen

    1. Wie läuft das allgemein? Muss ich nur einen Server erstellen?
    2. Wie suchen/finden die anderen den Server im Netzwerk?
    3. Gibt es Tutorials dazu?



  • Ist eigentlich gar nicht so schwer.

    zu 1.) Wie meinst du das genau? Man könnte das Problem sowohl als Client-Server als auch als Peer-to-Peer lösen, kommt darauf an, was du genau willst.

    zu 2.) Der Server sendet regelmäßig ein Paket an die Broadcastadresse im LAN. Die Clients lauschen ständig nach solchen Paketen. Ganz einfach wäre ein Paket, in dem der Name des Servers drin steht. Sobald ein solches Paket ankommt, trägt der Client den Server in seine Liste ein.
    Das ganze in Peer-to-Peer würde bedeuten, dass jeder Peer regelmäßig einen Broadcast macht und auch ständig nach Paketen lauscht. So kann man beispielsweise Lobbys realisieren, in denen alle im Netzwerk aktiven Spieler angezeigt werden.

    zu 3.) Einen sehr guten Einstieg bietet folgende Seite: http://www.c-worker.ch/tuts.php

    gruß



  • danke, super hilfe, dass tutorial werde ich mal durcharbeiten

    eine weiter frage: wenn ich jetzt einen server und 5 clients habe die alle miteinander verbunden sind und der erste client dem zweiten ein bild schicken will

    kann ich das dann direkt machen oder läuft das über den server?



  • Beides ist möglich.



  • Direkt ist sinnvoller, weil es den Server nicht belastet. Wenn du allerdings möchtest, dass die Clients sich nicht direkt kennen, d.h. keine IPs austauschen, sondern nur über Nicks bekannt sind (so ein Wunsch kann ja vorkommen), wäre die Variante über den Server besser.



  • ok, danke an euch

    ich werde mal schauen wie weit ich komme



  • Im LAN ist es fast immer besser die Daten von Client zu Client direkt ("peer to peer") zu übertragen. Fast.

    Ausgenommen sind hier natürlich Dinge die der Server auch gerne wissen möchte bzw. wissen muss, z.B. weil er diverse Dinge überprüfen möchte oder aber sogar replication-master für bestimmte Objekte spielt.

    Wenn es auf die Geschwindigkeit nicht ankommt kann es aber Sinn machen alles über den Server zu machen. Ist oft einfacher (das Spiel muss sich nichtmehr um soviel kümmern), und ermöglicht dann auch das Spielen übers Internet (viele Spieler werden keine Verbindungen annehmen können, die könnten dann nicht mitspielen bei "peer to peer" Spielen).

    Auch wenn man eine grosse Anzahl an Spielern möchte (sagen wir mal > 20 oder so) ist es oft besser alles über den Server abzuwickeln. Dadurch ist der Server der einzige PC (und das Server-Programm das einzige Programm) welcher (welches) mit einer grosse Anzahl an gleichzeitigen Verbindungen klarkommenn muss. Die Clients kommen dann mit einer einzigen Verbindung aus.

    BTW: wenn du "nur" ein Spiel programmieren möchtest dann nimm eine fertige Library für sowas (das Spiel wird nämlich genug Arbeit sein, auch ohne sich um so "Details" zu kümmern). Wenn du dich natürlich für das Thema Netzwerkprogrammierung interessierst und dazulernen willst, dann mach es selbst.



  • Schön differenziert!


Anmelden zum Antworten