【发布时间】:2012-01-12 08:04:22
【问题描述】:
我正在尝试通过使用其公共 ip 以 tcp 连接到 java 中的服务器计算机。但是当我运行客户端应用程序时,我不断收到连接被拒绝错误。如果我使用 localhost 而不是公共 ip,它可以完美运行。
我在互联网上搜索问题的几个原因,但我无法解决它。
我在路由器设置中将该端口转发到我机器的本地 IP 地址(192.168.1.3)。然后我在使用 netstat -an 运行服务器应用程序时检查端口是否正在侦听。我看到像这样的线条, 0.0.0.0:19999 或 []:19999 。 19999 是我要监听的端口号。然后我将我的ServerSocket构造函数更改为3参数一,它也绑定了本地地址。
InetAddress miad = InetAddress.getByAddress(addr);
ServerSocket socket1 = new ServerSocket(port,10,miad);
addr 是我的机器本地 IP 的 InetAddress。经过这些修改后,当我启动服务器应用程序时,我运行 netstat 并显示:
TCP 192.168.1.3:19999 0.0.0.0 LISTENING
我认为我的服务器正在侦听正确指定的端口。
我还禁用了我的防火墙和防病毒软件。
我在网上看到了几个关于这个问题的线程和讨论,并尝试了那里提到的大部分东西,但我一直收到连接被拒绝的错误。
我做错了什么?当我使用 localhost 进行测试时,它运行没有任何错误。
【问题讨论】:
-
添加SSCCE 以更快地获得帮助。
-
您是使用公共 IP 从您自己的本地网络连接到服务器,还是从 Internet 上的其他地方连接? (前者不适用于很多路由器/调制解调器)
-
其实我是在同一台机器上做的。是这个问题吗?
-
顺便说一句
System.out.println(miad);的结果是什么? -
你能
telnet 192.168.1.3 19999吗?