哪位朋友搞过P2P 的能说说怎么实现ClientA 要求Serv er 发送信息给ClientB 向ClientA 打洞
原理大体知道点: 想实现ClientA 与B 通信,必须让Serv er 通知ClientB 向ClientA 打洞,因为ClientA 直接向B 发送信息,出于安全考虑会被禁止的,所以在A 向B 通信之前,必须让B 发送信息给A
但是我不明白ClientB 发送信息给A 不一样会被A给禁止么
你好,实现过程如下: 服务器端Server 启动两个网络侦听
客户端CilentA 和客户端CilentB 分别与服务器端Server 保持联系
当 CilentA 需要和 CilentB 建立直接的TCP 连接时,首先连接服务器端Server 的打洞端口,并发送协助连接申请
同时在该端口号上启动侦听
SERVER连接收到CilentA的申请后通知CilentB,并将CilentA经过公网IP地址和端口等信息告诉CilentB
CilentB 收到服务器端Server 的连接通知后首先与Server 的打洞端口连接,随便发送一些数据后立即断开,这样做的目的是让服务器Server 能知道CilentB 的公网IP 和端口号
CilentB 尝试与CilentA 的公网IP 地址和端口进行connect 客户端B 打洞的同时在相同的端口上启动侦听
CilentB 在一切准备就绪以后通过与服务器Server 在收到以后将 CilentB 的公网IP 和端口号告诉给CilentA
CilentA 收到服务器Server 回复的CilentB 的公网IP 和端口号等信息以后,开始连接到 CilentB 公网IP和端口号,从而直接的TCP 连接建立起来了
// 服务器SERVER 地址和端口号定义 #define SRV_TCP_MAIN_POR