2016-03-19 14 views
1

マルチプレイヤーゲームを作成しようとしています。libGDXクライアント(サーバー)クライアント接続

1. Port Forwarding 

だけ少数の人々は自分のルータのポートを開きます: 私はこれを行うための3つの方法があると思います。

2. UDP/TCP hole punching 

これは複雑であり、すべてのルータ/ NATでは機能しません。

3. Relay Server 

これはマルチプレイヤーを達成する最も簡単な方法だと思います。 私の計画は、他のプレーヤーとのソケット接続を持ち、データを渡すPHPサーバーへのソケット接続を確立することです。

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(); 
      } 

そして

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(); 

私はクライアントからのソケット接続からデータを受信することができます方法:私はクライアント部分とJavaでテストサーバーの一部を持っている時には

これを行うにはもっと良い方法がありますか?

答えて

1

PHPからソケットサーバーを作成したいですか?私はそれを推薦していない。 kryonetを使用してください。 Javaソケットクライアント& Javaで使いやすいサーバーです。

サーバをオンラインにする場合は、使用可能なパブリックIPを使用してサーバ上でKryonet Socket Serverを実行します。

関連する問題