我用 Java 制作了一个简单的多客户端聊天应用程序(借助一本名为 HEAD FIRST JAVA 的书)。该应用程序在本地主机上运行良好,即当客户端和服务器都在同一主机上运行时,当我在一台主机上运行服务器而在同一网络中的其他主机上运行客户端时也运行良好。但问题是我无法通过使用此应用程序与我在其他网络中的朋友交流。谁能解释为什么?
关于聊天应用的查询
网络工程
互联网
局域网
万
2022-02-14 19:11:49
1个回答
您已经提到了问题:您的朋友与您不在同一个网络中。
我猜您的应用程序在启动时会询问服务器的 IP 地址,然后尝试连接到它。这是一种有效的方法,通常也是一个好主意,只要一切都保持在同一个网络中。
现在我猜您的朋友正在使用您提供给他的服务器 IP 地址,您使用类似whatismyip.com 之类的服务查找了该地址。这就是这里的主要问题。
假设你们俩都使用“正常”的互联网连接供个人使用,那么您给他的 IP 就是您的路由器之一。但是,路由器不知道如何处理来自您朋友计算机的聊天客户端连接到服务器的请求。所以它只是放弃了请求。
在这种情况下,魔术关键字是“端口转发”,具体取决于设备,路由器的配置屏幕中应该有类似的设置。它允许您将到达某个端口的所有流量转发到您选择的某个主机(在您的情况下是服务器)。
请注意这些设置,因为它们允许从 Internet 访问您的本地网络!
此外,您必须让聊天客户端尝试连接您配置路由器监听的端口。如果它还没有选项,您将必须实现它并向您的朋友发送更新的应用程序。