如何与中央服务器构建 P2P 握手但不中继所有流量?

How to structure P2P handshake WITH central server but WITHOUT relaying all of their traffic?

我有一个客户端 A 和客户端 B,它们都位于某些 NAT 组合之后,我需要它们通过 TCP/UDP 建立 P2P 连接。我有什么办法可以使用外部服务器,让这两个客户端可以可靠地访问,打开一个套接字,然后切换那些打开的套接字,以便它们开始相互通信?

有几种方法可以做到。

  1. NAT-PMP 和 UPNP 可能是最好的选择,但局限性是如果你的 NAT 设备不支持,这些将无效。

  2. 使用ICE结构可以帮你做到。但是你需要知道NAT有四种不同的类型,对于对称NAT,我们必须从中央服务器中继流。