java tcp与公共IP的连接

发布于 2024-12-19 09:42:02 字数 756 浏览 0 评论 0原文

我正在尝试使用 java 中的公共 IP 来 tcp 连接到服务器计算机,但是当我运行客户端应用程序时,我不断收到连接拒绝错误。如果我使用 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

这里我认为我的服务器正在正确指定的端口上侦听。

我还禁用了防火墙和防病毒软件。

我在网上看到了有关该问题的多个线程和讨论,并尝试了其中提到的大部分内容,但我不断收到连接拒绝错误。

我可能做错了什么?当我使用本地主机测试时,它运行没有任何错误。

I am trying to tcp connect to a server machine in java, by using its public i.p. but when i run the client application i constantly getting a connection refused error. if i used localhost instead of the public ip, it works perfectly.

i search the internet for several causes of the issue but i couldnt fix it.

i forwarded the port to my machines' local i.p address(192.168.1.3) in routers settings. then i checked if port is listening when i ran the server application using netstat -an. i saw lines like,
0.0.0.0:19999 or []:19999 .
19999 is the port number i am trying to listen to. Then i changed my ServerSocket constructor to the 3 parameter one, which also binds the local address.

InetAddress miad = InetAddress.getByAddress(addr);
ServerSocket socket1 = new ServerSocket(port,10,miad);

addr is the InetAddress of my machines local i.p. After these modifications, when i start the server application, i run netstat and it shows:

TCP   192.168.1.3:19999    0.0.0.0 LISTENING

Here i think that my server is listening on the port specified properly.

I have also disabled my firewall and antivirus software.

I have seen several threads and discussions on the net about the issue, and tried most of the things mentioned there, but i keep getting the connection refused error.

What can i be doing wrong? It runs without any errors when i test with localhost.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

紫﹏色ふ单纯 2024-12-26 09:42:02

这是因为路由器的原因(不太确定,但差不多)。尝试查看像 www.canyouseeme.org 这样的网络服务是否可以连接到您的服务器。

主要思想是内部计算机(LAN 内部)无法使用外部(公共)IP 地址连接到同一 LAN 内部的计算机。

我很确定它会工作,使用你的内部IP(192.168.1.3)。

如果您确定正确转发端口,CanYouSeeMe 会说您的服务器可以访问。如果没有,请确保您的 ISP 没有出于某种“安全原因”而阻止端口。

This is because of the router (not very sure, but almost). Try to see if a webservice like www.canyouseeme.org can connect to your server.

The main idea is that an internal machine (inside the LAN) cannot connect to a machine inside the same LAN by using the external (public) IP address.

I'm pretty sure that it will work, using you internal ip (192.168.1.3).

And if you are sure that you forwarded ports correctly, CanYouSeeMe will say your server is reachable. If it doesn't, make sure you ISP isn't blocking the ports for some kind of "safety reasons".

万劫不复 2024-12-26 09:42:02

要确定您的问题是否与 Java 和编程有关,请执行以下操作:

telnet 192.168.1.3 19999

如果无法连接,那么 superuser.com 将是讨论此问题的更好地方。

To figure out if your problem relates to Java and programming please do

telnet 192.168.1.3 19999

If it can't connect then superuser.com would be a better place to discuss this issue.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文