正如标题所说,我的服务器在本地计算机上运行,我对其进行了测试和调试,它运行得很好(服务器也是用java编写的)。但是当我尝试用我的远程IP(而不是192.168.0.113,我使用146.255.x.x)测试它时,服务器没有收到任何东西,而客户端抛出了这个:
09-04 18:23:27.595: W/System.err(24241): java.net.ConnectException: failed to connect to /146.255.x.x (port 4040): connect failed: ECONNREFUSED (Connection refused)
09-04 18:23:27.595: W/System.err(24241): at libcore.io.IoBridge.connect(IoBridge.java:114)
09-04 18:23:27.595: W/System.err(24241): at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:192)
09-04 18:23:27.595: W/System.err(24241): at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
09-04 18:23:27.595: W/System.err(24241): at java.net.Socket.startupSocket(Socket.java:566)
09-04 18:23:27.595: W/System.err(24241): at java.net.Socket.tryAllAddresses(Socket.java:127)
09-04 18:23:27.595: W/System.err(24241): at java.net.Socket.<init>(Socket.java:177)
09-04 18:23:27.595: W/System.err(24241): at java.net.Socket.<init>(Socket.java:149)
09-04 18:23:27.595: W/System.err(24241): at com.statenislandchat.Main$2$1$1.run(Main.java:146)
09-04 18:23:27.595: W/System.err(24241): Caused by: libcore.io.ErrnoException: connect failed: ECONNREFUSED (Connection refused)
09-04 18:23:27.595: W/System.err(24241): at libcore.io.Posix.connect(Native Method)
09-04 18:23:27.600: W/System.err(24241): at libcore.io.BlockGuardOs.connect(BlockGuardOs.java:85)
09-04 18:23:27.600: W/System.err(24241): at libcore.io.IoBridge.connectErrno(IoBridge.java:127)
09-04 18:23:27.600: W/System.err(24241): at libcore.io.IoBridge.connect(IoBridge.java:112)
09-04 18:23:27.600: W/System.err(24241): ... 7 more
我很久以前就禁用了服务器 PC 上的防火墙,并且我确实转发了路由器上的端口。我尝试使用一些端口扫描仪,它们都检测到我的端口上的服务,但我的客户端一次又一次无法访问它。
SOLVED!我的路由器似乎启用了客户端隔离,这意味着设备无法在同一网络上相互连接。我尝试从远程客户端进行连接,结果成功了。
ECONNREFUSED 意味着已尝试连接,并且远程主机回复说没有人在侦听该端口。这可能意味着几件事:
- 这真的是你的IP吗? ifconfig/ipconfig 说什么(提示:不一定是whatismyip.com 会说什么)?
- Java 服务器是否监听所有接口?同一端口可以在本地主机上打开并在其他接口上关闭。检查服务器上的绑定地址。
- 尝试 telnet + tcpdump,是否显示数据包发送到正确的地址?
而这些仅仅是开始。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)