gpt4 book ai didi

java - 通过 TCP 和公共(public) IP 连接,无需转发

转载 作者:可可西里 更新时间:2023-11-01 02:43:44 24 4
gpt4 key购买 nike

我正在尝试在 java 中使用 TCP 编写一个简单的聊天程序。

要连接到服务器,我需要知道它的 IP 地址。我已连接到我网络中的路由器,该路由器将我连接到互联网。

当我输入本地 IP(由路由器分配)时,它在我的两台计算机之间运行良好。但是当我输入公共(public) IP 时(我从谷歌得到它:“你的 ip 是什么”......) - 它没有用。

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

------------ 问题:
但是如何不转发呢?我想写一个聊天程序。我不能告诉我的用户:“只做端口转发”;)
一个打开我的程序并登录到中央服务器,然后在那里写入公共(public) IP。一些其他用户打开此服务器,下载文件并获取第一个用户的 IP(或任何其他需要的信息)。
但是如果第一个用户没有做端口转发,它就不会工作。如何让它发挥作用?

最佳答案


为此,您需要了解称为 NAT(网络地址转换)的工作原理。简单来说,NAT 负责将数据包从外部发送到内部网络上的正确计算机。

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

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

So to keep all your users from port forwarding their routers:

  • Port forward your server on your internal network
  • Connect the clients on another network
  • For clients on the internal network; use the local IP of the server

希望对您有所帮助!
-卡德

关于java - 通过 TCP 和公共(public) IP 连接,无需转发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22431117/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com