Ok, fangen wir von vorne an. Ich weiß nicht, was Sie tun und wie, aber wenn Sie mit dem Netzwerk arbeiten, müssen Sie das REACTOR- Muster ausprobieren .
Grundsätzlich ist der Reaktor eine Möglichkeit, die Verwendung von Gewinden zu vermeiden oder sie zu verschieben, wenn eine Gewindeaufgabe durch den Kern stärker entkoppelt ist.
Das Zentrum des Reaktors ist die Auswahlfunktion : Sie registrieren Ihre Ereignisquellen und bitten die Auswahl, wann zurückzukehren etwas mit einer dieser Quellen passiert .
Wenn etwas angehängt wird, findet die Reaktorhauptschleife einfach, was an welche Quelle angehängt ist , indem sie ein Ereignis erstellt und dieses Ereignis an Objekte an solchen Ereignissen interessiert sind.
Ich bin kein Java Guru, aber ich weiß, dass Sie Sockets einrichten können (auch UDP-Sockets) und sie als nicht blockierend festlegen können. Ich weiß, dass es in einem Paket namens NIO eine Klasse namens Selector gibt. Diese Dinge stimmen überein, um eine gemultiplexte, nicht blockierende E / A-Einrichtung zu definieren
Sie müssen lediglich zwei UDP-Kanäle einrichten: einen für das Abhören des Servers und einen für das Sprechen des Servers. Registrieren Sie den zuhörenden Reaktor und integrieren Sie den Reaktionsschritt des Reaktors in Ihre Hauptschleife.
Berücksichtigen Sie, dass Sie mit dieser Art von Ansatz gleichzeitig eine Verbindung mit verschiedenen Kanälen herstellen können, um ein Peer-to-Peer-Spiel zu entwickeln (kein Serverengpass und verteiltes Design ... klingt gut!).
PS
Bitte beachten Sie, dass Sie wahrscheinlich bereits einen Reaktor verwenden, wenn Sie eine Art GUI-Einstellung / Einrichtung verwenden ...