Ich versuche ein Multiplayer-Spiel zu erstellen. Ich denke, es gibt drei Möglichkeiten, dies zu tun:libGDX Client (Server) Client Verbindung
1. Port Forwarding
Nur wenige Menschen einen Port auf dem Router öffnen.
2. UDP/TCP hole punching
Dies ist sehr kompliziert und wird nicht mit jedem Router/NAT funktionieren.
3. Relay Server
Ich denke, das ist die einfachste Methode, um einen Multiplayer zu erreichen. Mein Plan ist also, eine Socket-Verbindung zu einem PHP-Server herzustellen, der auch eine Socket-Verbindung mit dem anderen Player hat und die Daten weiterleitet.
Damals habe ich einen Client-Teil und einen Testserver Teil in Java haben:
SocketHints hints = new SocketHints();
Socket client = Gdx.net.newClientSocket(Net.Protocol.TCP, textfield.getText(), 9021, hints);
try {
client.getOutputStream().write((textfield2.getText() + "\n").getBytes());
} catch (IOException e) {
e.printStackTrace();
}
Und
new Thread(new Runnable() {
@Override
public void run() {
ServerSocketHints serverSocketHint = new ServerSocketHints();
serverSocketHint.acceptTimeout = 0;
ServerSocket serverSocket = Gdx.net.newServerSocket(Net.Protocol.TCP, 9021, serverSocketHint);
while (true) {
Socket socket = serverSocket.accept(null);
BufferedReader buffer = new BufferedReader(new InputStreamReader(socket.getInputStream()));
try {
status += "Receiving message: \"" + buffer.readLine() + "\"\n\n";
} catch (IOException e) {
e.printStackTrace();
}
}
}
}).start();
Wie kann ich Daten aus dem die Socket-Verbindung vom Client?
Und gibt es vielleicht einen besseren Weg, dies zu tun?