【发布时间】:2015-03-10 13:37:47
【问题描述】:
我编写了一个简单的 Java 服务器-客户端程序。当我在 Socket 的构造函数中使用“localhost”作为地址时它工作得很好,但是当我指定我的实际 IP 时它会失败。因此,我认为问题不在于 Java 代码。
我已经转发了路由器上的端口(来自德国电信提供商 Telekom 的 Speedport w921v)。在 Windows 7 上,我已经关闭了所有防火墙。我在 Ubuntu 14 上也试过。我使用的是正确的 ip,而不是像 127. 或 192.. 这样的本地 ip。在输入 sudo netstat -tulpe 时,我发现这条记录可能属于我的程序
tcp 0 0 *:10300 *:* LISTEN
10300 是我用server = new ServerSocket(10300); 为服务器提供的端口
当我尝试通过telnet xx.xxx.xx.xxx 10300 与端口通信时,我无法得到任何响应,但如果我输入telnet localhost 10300 我会得到答案。
我真的不知道为什么会出现这个问题。
抱歉英语不好;)
【问题讨论】:
-
如果您的路由器有问题,您可能是 PowerUser 或 ServerFault。我见过只对来自互联网的连接执行重定向的路由器,而不是从本地网络使用到外部地址的连接。您可以请朋友检查他是否能够从外部连接。您在路由器上配置的屏幕截图可能会有所帮助。
标签: java ip client-server localhost portforwarding