我创建了一个小型聊天程序,当客户端和服务器在同一台计算机(也可能是网络)上运行时,它可以完美运行.但是,只要我尝试通过互联网连接到另一台计算机,套接字连接就会超时.这是因为防火墙/路由器等吗?
我如何通过互联网连接ServerSocket和Socket?
但是,只要我尝试通过互联网连接到另一台计算机,套接字连接就会超时.这是因为防火墙/路由器等吗?
是的,最有可能的.您遇到了NAT问题:基本上,相同的外部可见IP地址映射到许多内部可见的端点,外部端点不知道给您的套接字请求的内部端点.
最简单的方法是让你的客户连接到他们都可以看到的第三方,然后让第三方调解通信.例如,这就是大多数即时消息传递协议的工作方式.
如果您无法控制这样的第三方实体,则直接连接两个客户端的替代方法是让两个客户端打开一个商定的端口,然后将该端口上的通信映射到它们自己的内部端点.这提供了外部可见端点(例如,您的家庭路由器)需要将通信传递到其预期目的地的缺失链接.
| 归档时间: |
|
| 查看次数: |
8466 次 |
| 最近记录: |