私は作成したゲームにマルチプレイヤー機能を追加しようとしています。私はソケット上でJavaのtutorialを読んだが、私が望む機能を達成することができなかった。 similar postでは、別のユーザーが私と同じ問題を経験したようです。JavaソケットはLAN上で動作しませんか?
私の場合は...
- 私は、Javaチュートリアルに直接与えられた二つのプログラムを実行しています。
- 私はそれらを同じコンピュータ上で実行すると、問題なく動作します。
- OSXマシン(root)とクライアントプログラムをW7マシンで実行すると、引き続きIOExceptionが発生します。クライアントマシンは同じポートであってもサーバマシンに到達できません(私は9355をどちらも)。
- 私はW7マシン上でサーバープログラムを実行し、OSXマシン上のクライアントプログラム(ルート付き)を実行すると、まだIOExceptionを取得します。サーバープログラムで
System.out.println(serverSocket.getInetAddress());
を実行
いくつかの追加情報...
- 両方のマシンに
0.0.0.0/0.0.0.0
を返します。System.err.println("Couldn't get I/O for the connection to " + hostName); e.printStackTrace(); System.out.println(e.getMessage()); System.out.println(e.getLocalizedMessage());
から
私は、クライアントまたはサーバマシンのいずれかでファイアウォールを無効にする必要がありますなぜ私は
Couldn't get I/O for the connection to 192.168.0.37
Operation timed out
java.net.ConnectException: Operation timed out
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.net.Socket.connect(Socket.java:579)
at java.net.Socket.connect(Socket.java:528)
at java.net.Socket.<init>(Socket.java:425)
at java.net.Socket.<init>(Socket.java:208)
at Main.MainClass.main(MainClass.java:17)
Operation timed out
を取得しますか? Javaが受信データ用のソケットをオープンしていないのですか?このチュートリアルでは、それがまだ機能していないと、それはとてもシンプルになってしまうのはなぜですか?
クライアントはOSXマシンのIPアドレスを使用して接続していますか? '' 0.0.0.0''の情報はまったく役に立たない... – f1sh
あなたは何か* IO *なぜあなたはすべてのデータを提示せずに結論に飛びついていますか? 「なぜファイアウォールを無効にする必要がありますか?」そうではないかもしれない。 'Javaがソケットを開いていないのですか?'はい、あります。 'なぜチュートリアルはそれをとてもシンプルにするのですか?'そうです。ここで助けが必要な場合は、秘密裏の証拠に基づく推測に基づく質問のリストだけではなく、答えることができる問題を提示する必要があります。 – EJP
@ f1sh私が他の場所で読んだことから、 '0.0.0。「0」は、サーバ・プログラムがサーバ・マシン上のすべてのネットワーク・インタフェースに接続されていることを意味する。それは私がリンクした同様の記事でさえ言及されました。 – user5705019