1. 原理

UDP打洞

打洞过程

(1)ClientA请求Server。

(2)ClientB请求Server。

(3)Server把ClientA的IP和端口信息发给ClientB。

(4)Server把ClientB的IP和端口信息发给ClientA。

(5)ClientA利用信息给ClientB发消息。(A信任B)

(6)ClinetB利用信息给ClientA发消息。(B信任A)

(7)连接已经建立。两者可以直接通信了。

//--------------------------------------------------------------

但是这里一定要注意,能用UDP打洞成功是有要求的,不能是两个NAT设备都是对称类型的。如果一个是对称类型,一个是cone类型的NAT,这种情况下还可以使用预测法。网上可以找到对应的论文,大家可以去看看。我这里的成功是基于两端都是cone NAT类型设备的。
//--------------------------------------------------------------

 

2. 代码实现

服务器代码

https://gitee.com/hongyingheng/UDPServerDemo

客服端代码

https://gitee.com/hongyingheng/UDPClientDemo

 

 

 

相关文章: