首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >通过TCP和公共IP连接,无需转发

通过TCP和公共IP连接,无需转发
EN

Stack Overflow用户
提问于 2014-03-15 23:36:04
回答 1查看 2.1K关注 0票数 2

我试图用java中的TCP编写一个简单的聊天程序。

要连接到服务器,我需要知道它的IP地址。我连接到我网络中的一个路由器,它把我连接到互联网上。

当我输入本地IP (由路由器分配)时,它在我的两台计算机之间工作得很好。但当我输入公共IP时(我从谷歌那里得到的:“你的ip是什么”)

所以我打开了路由器的设置,并制定了从我的公共IP和特定端口到本地IP的转发规则--它起了作用。

-问题:

但是,如何在不转发的情况下实现呢?我想写个聊天程序。我不能告诉我的用户:“只要做端口转发”;)

一个打开我的程序并登录到中央服务器,然后写入那里的公共IP。其他一些用户打开此服务器,下载该文件并获取第一个用户的IP (或任何其他需要的信息)。

但是,如果第一个用户没有进行端口转发,它将无法工作。怎么让它起作用?

EN

回答 1

Stack Overflow用户

发布于 2014-03-16 02:26:53

为此,您需要了解所谓的NAT (网络地址转换)是如何工作的。简单地说,NAT负责从外部向内部网络上的正确计算机发送数据包。

例如,您在内部网络上有计算机A作为服务器,而外部网络上有计算机B。如果您随后尝试从计算机B连接到计算机A,它将无法工作,因为NAT (您的路由器)不知道在内部网络上将该数据包发送给哪台计算机。

当您想连接到外部服务器时,它是不同的。假设计算机A(客户端)在外部网络上,计算机B(服务器)在内部网络上,路由器端口被转发到它的IP地址。然后,您将能够连接到服务器,因为NAT知道在哪里发送数据包。

以便防止所有用户端口转发他们的路由器:

  • 将服务器转发到内部网络上
  • 连接另一个网络上的客户端
  • 用于内部网络上的客户端;使用服务器的本地IP。

希望这能帮上忙!

-Kad

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22431117

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档