こんにちは、Java マルチプレイヤー ゲームを作成していますが、すべて正常に動作します。必要なものはすべて揃っていますが、問題が見つかりました。サーバーには ServerSocket を使用し、クライアントには Socket を使用します。問題なく動作しますが、大きな問題は、世界中で動作しないことです。LAN のみ、Hamachi も試しましたが、それもうまくいきませんでした。
何がうまくいくか、何かアイデアはありますか?
いくつかの詳細情報: サーバーで特定のスレッドを使用してソケットを受け入れ、送信し、受信し、クライアントで特定のスレッドを使用して送受信します。私が作成したオブジェクトを送信し、すべての情報を含めます。
ip = InetAddress.getLocalHost().getHostAddress() + ":" + port;
server = new ServerSocket();
//This asks you if you want to use a specific IP or just the one that we got in first line
String socketaddress;
socketaddress = (String) JOptionPane.showInputDialog(null, "IP: ", "Info",JOptionPane.INFORMATION_MESSAGE,null,null,InetAddress.getLocalHost().getHostAddress());
server.bind(new InetSocketAddress(socketaddress, port));
//Here it starts the accept thread, and then it starts send and receive threads
new Thread(accept).start();
私が最も重要だと思うクライアントからの内容は次のとおりです。
socket = new Socket(ip,port);
String set_username = System.getProperty("user.name");
set_username = (String) JOptionPane.showInputDialog(null, "Username: ", "Info", JOptionPane.INFORMATION_MESSAGE,null,null,set_username);
username = set_username;
//It sends the username to server
ObjectOutputStream oos = new ObjectOutputStream(socket.getOutputStream());
oos.writeObject(username);
//Then server responds with a message
ObjectInputStream ois = new ObjectInputStream(socket.getInputStream());
String response = (String) ois.readObject();
//This writes the server' message
JOptionPane.showMessageDialog(null, response, "Message",JOptionPane.INFORMATION_MESSAGE);
また、別の問題があります。ソケットがクライアントから別のクライアントに到達するのに3〜4秒かかります。同じネットワーク上にあり、インターネットが高速であるため、ほぼ瞬時に完了するはずです。
編集:クライアントと同じPCにサーバーを作成しようとしましたが、グローバルIPを使用して参加すると機能しませんでした:(
編集: その作業は今とても幸せです。私がしなければならなかったのは、ファイアウォールにポートを追加することだけでした。ありがとうございました:D. 友達と遊べるようになりました :3