我试图为我创建的游戏添加多人游戏功能。我已经在套接字上阅读了Java tutorial,但发现自己仍然无法实现我想要的功能。在similar post中,另一位用户似乎遇到了与我相同的问题。
就我而言......
一些其他信息......
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
为什么我需要在客户端或服务器上禁用防火墙? Hasn的Java是否为传入数据打开了套接字?如果教程尚未成功,为什么教程会如此简单?
答案 0 :(得分:2)
ConnectException: operation timed out
表示主机已关闭或防火墙问题。
为什么我需要禁用防火墙
因为它阻止了入站连接。您无需完全禁用它:您需要在服务器防火墙中打开正在侦听的端口。
Java没有打开套接字
是的,这就是你得到0.0.0.0的方式:它是ServerSocket
的收听地址。