Networking 如何在不中继所有流量的情况下与中央服务器构建P2P握手?

Networking 如何在不中继所有流量的情况下与中央服务器构建P2P握手?,networking,server,nat,handshake,upnp,Networking,Server,Nat,Handshake,Upnp,我有一个客户端a和客户端B,两者都在NAT的一些组合后面,我需要它们通过TCP/UDP建立P2P连接。有没有什么方法可以让我使用外部服务器,这两个客户端可以可靠地访问,打开一个套接字,然后切换这些打开的套接字,这样它们就可以开始相互通信了?有几种方法可以做到这一点 NAT-PMP和UPNP可能是最好的选择,但其局限性是,如果您的NAT设备不支持它,这些将是无效的 使用冰结构可以帮助你做到这一点。但您需要知道NAT有四种不同的类型,对于对称NAT,我们必须中继来自中央服务器的流 我总是可以使用这两

我有一个客户端a和客户端B,两者都在NAT的一些组合后面,我需要它们通过TCP/UDP建立P2P连接。有没有什么方法可以让我使用外部服务器,这两个客户端可以可靠地访问,打开一个套接字,然后切换这些打开的套接字,这样它们就可以开始相互通信了?

有几种方法可以做到这一点

  • NAT-PMP和UPNP可能是最好的选择,但其局限性是,如果您的NAT设备不支持它,这些将是无效的

  • 使用冰结构可以帮助你做到这一点。但您需要知道NAT有四种不同的类型,对于对称NAT,我们必须中继来自中央服务器的流


  • 我总是可以使用这两个步骤的组合来尝试这样做,比如NAT-PMP->UPNG->ICE,对吗?还有一个问题,如果由于NAT,我的两个客户端都只有一个灰色的IP,但是有一个像我描述的那样的中央服务器,那么这两个步骤是否仍然有效?您可以同时使用这两种方法。你所描述的情况也能奏效。我想你可以在github中看到libtorrent的源代码,它会对你有所帮助。谢谢,我会尝试一下。