p2p研究小结

最近有空研究了下p2p,p2p主要解决了内网对内网直接通信问题。文章参考自

P2P 之 UDP穿透NAT的原理与实现(附源代码)

附带的源码虽然可以调试运行p2p成功发送消息,但是代码bug太多,改了几天 ,运行更加流畅,

然后把udt的源码加入,使用了udt的bind2 udp socket,p2p connect,增加了传输文件的功能,recv username filename

即可实现p2p传输文件,经过实际测试,双方内网都传输文件成功了,只是传输速度有点慢,快可以达到30多kb/s

慢就只有几kb/s 具体原因不知道是不是哪个测试机的网络wifi弱导致网速慢。

p2p过程如下---------------------------------------------------------------------------

第一、先在两个客户端上建立 UDP的socket, 并连接 server ,进行 UDP 的NAT 穿透,这些过程都是 普通的 UDP传输,与UDT 没有任何关系。

第二、在确定 两个NAT后的客户端能 穿透后(发送数据 双方都能接收到数据,此时是普通的UDP 发送 ,用Sendto),用这两个UDP的 socket 与

UDT的 socket,进行结合,步骤如下: 
1) 在两个客户端分别建立一个 UDT socket ,用 UDT::socket(AF_INET, SOCK_DGRAM, 0);  
2) 设置对这两个UDT的socket 进行 UDT_RENDEZVOUS 设置 
3) 用bind(UDTSOCKET u, UDPSOCKET udpsock) 把UDP socket与 UDT socket 进行绑定 
4)然后 用UDT 的connect 进行同时连接(两个客户端)。 
5)用UDT::recvmsg 和 UDT::sendmsg进行接收和发送数据。即可

-----------------------------------------------------------------------------------------------------------

第一阶段 p2p传输文件没有问题了。那么接下来问题又来了,点对点udt模式 p2p后, 如何点对多传输。暂时还没有找到相关资料

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值