目前UDP打洞成功率达到了85%以上;但是TCP打洞得成功率仅仅65%左右,而且不稳定。不过该数据是我网上胡乱搜到的文章给出的数据,真实性不确认。不过现在很多游戏都已经使用UDP打洞技术并成功运行了。
1.UDP打洞
两种NAT:
1.基本NAT: 只改变IP,不改变PORT
2.NATP:IP和PORT都修改。
方法:
客户端A,B通过有公网IP的服务器S实现A,B通信。
1.A使用UDP发送信息给S.S记录A的外网IP和端口
2.B使用UDP发送信息个S.S记录B的外网IP和端口
3.S把A的外网端口和IP告诉B, S把B的外网Ip和端口告诉A
4.A通过B外网IP和端口发送信息给B实现通信, B通过A的外网IP和端口发送信息给A
如此实现了A,B的UDP直接通信
优化:
对于在于同一个NAT后面的A,B直接使用内部的IP进行通信
在UDP过程中使用心跳包防止UDP的连接由于闲置超时而被遗弃
2.TCP打洞