在我的电脑上建立端口转发服务器

在我的电脑上建立端口转发服务器

我尝试用java制作一个聊天程序。当我使用127.0.0.1的ip连接时,我成功了。

套接字socket = 新套接字(“127.0.0.1”,5005);

在我的计算机上,一切运行良好,甚至在我尝试连接我的计算机和使用相同路由器的笔记本电脑时,程序也能正常工作。(我使用本地 IP 来完成此操作。)然后,我想使用外部 IP 连接使用其他路由器的计算机。因此,我在网上阅读并了解到我需要通过路由器转发端口。我有一个西门子 ADSL Sl2-141 路由器。我转发了端口 5005,但我的聊天程序仍然无法正常工作。我一次又一次收到“连接被拒绝”错误。我遗漏了什么吗? 西门子端口转发

答案1

首先,您似乎正在将代码配置为仅监听本地主机,而不监听外部地址。请改用如下套接字连接:(根据本指南

编辑(根据下面的评论讨论进行更改):

Socket socket = new Socket("PUBLIC_IP_ADDR",5005);

您可以在哪里PUBLIC_IP_ADDR找到您的互联网地址这里

如果仍然无法连接,请验证该程序是否可用并且正在监听...

检查端口的指南

1)如果你还没有,请先阅读本指南并确认您已完成所有步骤。

2)使用此工具确认你的端口确实开放。

如果 #2 失败,则说明您的端口实际上并未打开。接受连接的 PC 是否主动监听 5005?

视窗:

Start -> Run -> cmd
  netstat -an | find /i "5005"

Linux:

(From terminal)
  netstat -l | grep 5005

如果旁边没有列出“正在监听”,则表示您的应用程序未监听连接。但我不怀疑这是问题所在,因为您可以在本地主机上执行此操作。

如果失败,请确认您的操作系统防火墙是否打开。

我现在能想到的就这么多

答案2

@Brian 说的。如果程序没有运行,你的内部地址可能是错误的。尝试用内部地址(“10.whatever”)替换“127.0.0.1”然后仍然从同一台计算机运行它。如果这样可行,那么你才应该从另一台计算机尝试它。如果它被同一子网上的另一台计算机阻止,那么很可能你有一个软件防火墙(“Windows Defender”或类似的东西)阻止了外部连接。

范围问题仍然存在:如果您需要帮助配置路由器,可以去 Google 和 superuser.com 寻求帮助。如果您需要编程方面的帮助,那么这个网站就是您的最佳选择。

相关内容