Anzeigen aller Server im LAN



  • Hallo Leute,

    ich habe ein sehr einfaches Netzwerk Spiel programmiert. Das Spiel habe ich WinSocket gemacht. Allerdings muss man bisher wenn man, wenn man zu einem Server connecten will immer die IP Adresse eingeben. Diese Lösung gefällt mir nicht.

    Kann mir jemand schreiben, wie man die Namen aller Rechner anzeigt im LAN bei denen z. B. auf dem PORT 5001 ein Server von meinem Spiel offen ist. Also in einer Listbox sollen dann alle Namen angezeigt werden und je nach dem welchen Rechner man auswählt soll dann dem Clienten die entsprechende IP zugewiesen werden.

    In der FAQ steht nur wie man alle Rechnen im LAN anzeigt, aber ich will ja nur, dass alle angezeigt werden, bei denen ein Spiel-Server gestartet wurde.

    DANKE



  • Denk dir ein bestimmtes Kommando aus, dass du an alle Rechner schickst.
    Wenn einer deiner Server dieses Kommando empfängt reagiert er mit einer bestimmten Antwort. Voilá, schon weisst du, auf welchen Rechnern dein Spiel läuft.

    Ich sehe allerdings nicht, was das speziell mit dem BCB zu tun haben soll.



  • Ich habe das komplette Spiel mit BCB gemacht. Also für Netzwerk habe ich den Server/client Socket verwendet. Vielleicht war WinSocket etwas irreführend.

    Ja aber wie funzt das mit BCB. Ich habe so etwas noch nie gemacht, ich war schon froh, dass es soweit läuft.

    Wenn ich das Programm in der FQA ansehen, verstehe ich auch nur Bahnhof. Wie muss ich das Programm erweitern, dass so geht. HÄÄ ?



  • Kann mir keinen einen Link auf ein fertiges Beispiel oder ein Beispiel posten ?
    Auch wenn ich nicht alles verstehe, hauptsache das funktioniert. Anhand des Quellcodes kann ich dann versuchen mich ein zu arbeiten.



  • Offenbar verschickst und empfängst du doch für dein Spiel bereits Informationen über's Netz, die deine Server auswerten, du weisst also wie's geht. Da sollte es doch nicht schwierig sein, z.B. per SendText Kommandos ala STATUS_REQUEST o.ä. abzuschicken. Wenn dein Server so eine STATUS_REQUEST-Nachricht erhält antwortet er z.B. mit seiner IP oder seinem Namen, teilt die aktuelle Zahl der Spieler mit usw.

    Das ist prinzipiell absolut simpel, ausserdem wird dir, ohne dein Spiel zu kennen, kaum jemand ein konkretes Code-Beispiel geben können.



  • Jansen schrieb:

    Da sollte es doch nicht schwierig sein, z.B. per SendText Kommandos ala STATUS_REQUEST o.ä. abzuschicken. Wenn dein Server so eine STATUS_REQUEST-Nachricht erhält antwortet er z.B. mit seiner IP oder seinem Namen, teilt die aktuelle Zahl der Spieler mit usw.

    Das ist prinzipiell absolut simpel, ausserdem wird dir, ohne dein Spiel zu kennen, kaum jemand ein konkretes Code-Beispiel geben können.

    Hi.
    Ich suche auch sowas, aber man muß doch mit dem Client-Socket verbunden sein, um Nachrichten zu verschicken. Geht sowas nicht ohne Verbindung zu haben?

    Ich kenne ein Programm das über Broadcast macht und feststellt wo der Server hängt. Das Prog heißt Ken DSL! von AVM. Der Client sucht automatisch nach dem Ken Server und das macht der per Broadcast...
    Aber wie würde sowas gehen?



  • Das Broadcasten geht per UDP, machen fast alle Games so im LAN.

    Einfach mal per TNMUDP Komponente ein Packet an 255.255.255.255 schicken.

    Am besten eine Definierte Message wie oben erwähnt z.B. mit STATUS_REQUEST.

    Deine Server benötigen dann auch eine UDP Kompo um diese zu empfangen.

    Der Port auf dem deine Server "Horchen" muss dann auch definiert sein. Meinetwegen "1234" Ports kleiner als 1024 solltest Du nicht benutzen, weil diese zum grössten Teil für andere Protokolle reserviert sind. Natürlich müssen deine Client auch auf diesen Ports den Request stellen.



  • Danke Fox-Alpha.
    Das hört sich gut an und total easy, das ich selbst nicht drauf komme. 😉
    Hätte auch mal den Ken! Sniffen können, welches Protokoll nimmt und so. 😉



  • Fox-Alpha schrieb:

    Einfach mal per TNMUDP Komponente ein Packet an 255.255.255.255 schicken.

    Das kommt nicht am Server an.
    Wenn der Client die IP: 192.168.0.1 hat und der Server in dem selben NEtz ist, geht das nur: 192.168.0.255

    Warum geht das mit 255.255.255.255 net?



  • weil 192.168.0.255 die Broadcast Adresse des Gesamtnetzes ist und nicht 255.255.255.255


Anmelden zum Antworten