udp打洞经历

        项目需要实现P2P视频对话,如果数据流全走中继服务器,则对带宽要求太高,所以尝试实验使用udp打洞技术。

udp打洞的原理,这篇文章讲的很好:

P2P通信原理与实现 - evilpan      

        总的实现流程如下:

        首先得有一个拥有公网IP的服务器,我用的是阿里云的服务器。
        两边客户端需要先向服务器发送UDP报文,服务器通过udp报文可以得知两边服务器的公网IP和端口,即NAT转换后的IP和端口。然后其中一个客户端发起连接请求,请求中应该包含它要连接的对方客户端的信息,服务器根据这个信息,把两个客户端的网络信息进行交换,客户端收到对方客户端的信息后,尝试向对方的IP和端口发送UDP即可。

        总的来说流程很简单,只要懂了原理就很容易实现。但是网络不一定能打通。   

        首先得先明白自己的NAT类型

        我使用的HMBSbige/NatTypeTester进行的NAT测试

        GITHUB下载地址https://github.com/HMBSbige/NatTypeTester/releases/download/3.4/NatTypeTester.exe       

        如果是对称型NAT,有可能会打洞失败。

        具体可以看这篇文章:

NAT的四种类型以及类型探测_nat类型检测-CSDN博客
        此外,即使是锥形NAT,也可能失败,我自己测试的时候,因为在校园网内,校园网的NAT是对称型的,所以尝试用手机热点,虽然手机热点的NAT测试为全锥型,但是依然打不通。后面换了一个网络才成功。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值