通过全球互联网连接 (C/C++) 的 TCP/IP 连接

时间:2020-12-28 20:06:28

标签: c++ c sockets tcp p2p

基本上,我一直在尝试使用标准套接字编程使用 c/c++ 在两台计算机之间中继消息。在局域网上一切正常。问题是使用外部 ip 地址之类的东西建立连接。我在网上搜索并看到了提到确保路由器配置为“端口转发”的方法。然而,我想知道像 qTox 这样的点对点通信应用程序如何克服这个障碍,因为它们不需要那个技术步骤?总而言之,如何在不在同一网络上的两台计算机之间连接两个套接字?

1 个答案:

答案 0 :(得分:1)

这里有一些我们通常用来解决问题的方法。

  1. 如果您可以将 WLAN 中的服务器用作中继或中央控制器,那就很简单了。计算机连接到服务器,服务器为它们更改消息并可以执行更多操作。

  2. 如果您不想使用服务器,那么这里有一个问题:NAT 设备可能会丢弃那些未根据其类型建立连接的数据包。这里有四种类型:全锥型 NAT、受限 NAT、端口受限 NAT 和对称 NAT。以下是针对这种情况的一些方法

    2.1 使用 NAT 遍历算法,但在对称 NAT 中可能效果不佳。

    2.2 使用 STUN/TURN/ICE 实现 NAT 穿越,比较可靠,但需要学习使用。

相关问题