![客户端-服务器通过互联网进行连接,客户端和服务器均位于路由器后面](https://linux22.com/image/1420972/%E5%AE%A2%E6%88%B7%E7%AB%AF-%E6%9C%8D%E5%8A%A1%E5%99%A8%E9%80%9A%E8%BF%87%E4%BA%92%E8%81%94%E7%BD%91%E8%BF%9B%E8%A1%8C%E8%BF%9E%E6%8E%A5%EF%BC%8C%E5%AE%A2%E6%88%B7%E7%AB%AF%E5%92%8C%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%9D%87%E4%BD%8D%E4%BA%8E%E8%B7%AF%E7%94%B1%E5%99%A8%E5%90%8E%E9%9D%A2.png)
我正在尝试使用 winsocket2 库通过互联网在两台计算机之间建立连接。客户端和服务器都在路由器后面。
我需要做什么才能成功连接?客户端和服务器都需要使用端口转发吗?还是只有服务器需要端口转发?
答案1
只有服务器端的路由器才需要端口转发。让我们换个角度看:目标主机何时会变得模糊不清?在服务器端,因为客户端连接到 1 个外部 IP 地址,但最终可能会转到多个可能的主机。如果路由器中没有映射,例如,TCP 端口 80 必须转发到主机 x,则该路由器不知道该怎么做,因为有多种可能性,它不能随机选择一种。
因为一张图片胜过千言万语: