こんにちは私はJavaのマルチプレイヤーゲームを作っています。 これは誰かが必要とするすべてのものを持っていますが、サーバ用にServerSocketを使用し、クライアント向けにソケットを使用していますが、大きな問題は世界中では機能しないということです。 LANだけ、私もHamachiを試したが、それも動作しませんでした。JavaソケットはLAN上で動作しますが、インターネットでは動作しませんか?
何が効果がありますか?
さらに詳しい情報:私は、送受信のためにクライアントでソケットを受け取り、送受信するための特定のスレッドをサーバー内で使用します。それは私が作ったオブジェクトを送り、すべての情報を含んでいます。ここで
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);
また、私は別の問題を抱えている、ソケットは別の1つのクライアントから取得するには3または4秒のように取ると、それがあるべきそれは同じネットワーク上にあり、私は高速インターネットを持っているのでほとんど瞬間。
編集:私は、同じクライアントを搭載したPCと上のサーバー、私のグローバルIPを使用して参加作成しようとした が、それは動作しませんでした:(
EDIT:RIGHT NOW ALL私が持っていた その作業IM SO HAPPY私は私の友人と遊ぶことができます:3
世界中で機能しないとはどういう意味ですか? _port forwarding_を正しく設定してもよろしいですか? – scientiaesthete
はい、完全に確実であり、ファイアウオールでもあります。 – IvanDonat
インターネット上のユーザーは、ホスト名/ IPとポート番号だけを使用して、マシン上のサービスにtelnetで接続できますか? –