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でテストサーバーの一部を持っている時には
?
これを行うにはもっと良い方法がありますか?