2016-03-19 13 views
1

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?

Antwort

1

Sie möchten also einen Socket-Server aus PHP machen? Ich empfehle es nicht. Versuchen Sie kryonet zu verwenden. Es ist ein Java Socket Client & Server mit einer einfachen Möglichkeit, in Java zu verwenden.

Wenn Sie den Server online schalten möchten, führen Sie den Kryonet Socket Server auf Ihrem Server mit verfügbarer öffentlicher IP-Adresse aus.