java - 连接在远程 IP 上被拒绝,但在本地 IP 上被接受

标签 java android

正如标题所说,我的服务器在本地计算机上运行,​​我对其进行了测试和调试,它运行得很好(服务器也是用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 上的防火墙,并且我确实转发了路由器上的端口。我尝试使用一些端口扫描仪,它们都检测到我的端口上的服务,但我的客户端一次又一次无法访问它。


已解决! 我的路由器似乎启用了客户端隔离,这意味着设备无法在同一网络上相互连接。我尝试从远程客户端进行连接,结果成功了。

最佳答案

ECONNREFUSED 表示已尝试连接,并且远程主机回复说没有人在监听该端口。这可能意味着几件事:

  1. 这真的是您的 IP 吗? ifconfig/ipconfig 说什么(提示:不一定是whatismyip.com 会说什么)?
  2. Java 服务器是否监听所有接口(interface)?同一端口可以在本地主机上打开并在其他接口(interface)上关闭。检查服务器上的绑定(bind)地址。
  3. 尝试 telnet + tcpdump,是否显示数据包发送到正确的地址?

这只是开始。

关于java - 连接在远程 IP 上被拒绝,但在本地 IP 上被接受,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18619195/

相关文章:

java - html解析器的问题

java - 使用 pdfBox 禁用 pdf 文本搜索

java - 从非 Activity 状态启动对话框

java - 获取第三个逗号的索引

Java XML 解析

android - CSS:-webkit-touch-callout 替代品 for android

android - @Ignore 和不可变字段的问题

android - 如何从命令行启动 Android 应用程序?

java - Android 中的 SparseArray 克隆

java - JPA+Hibernate+Mysql的查询语言问题