UDT库学习(一)

首先简单说明一下,就是UDT安全文件传输速度的确非常快。

UDT是基于UDP的数据传输(UDP based data transfer protocol),基于用户报文传输。主要支持互联网上海量数据传输的一种协议。相对于TCP在高带宽和长距离传输的效率来说,UDT的性能比TCP高,具体怎么个流程还要后面一一解析。

UDT在UDP基础上,封装SOCKET的各种属性,具体有点多,这一篇还不能一一列举。

大体构架IO处理模式是相对独立的发送线程和接收线程,分为两种处理方式一个是流形式,一个是包形式。

就我现在了解到的结构来说吧!主要是安全传输,如果是内网的话,那就好说啦,可以制作想飞鸽一个样的文件传输工具。如果是远端的话,就需要考虑先连通,就是打洞。

打洞相对来说,就是数据不是很多,最大也不会超过1500,当然这是一般来说。具体有别的需求的话就可以需要传输的数据比较大。就正常传输而言,一般不会超过1500,

如此,应用的话还是使用UDT中的报文传送方式比较好。一是数据考虑,二是容易解析数据,三容易控制。

如此就是可以获得两边的IP和port就可以直接连通。当然,根据统计说是90%的情况都能打通,主要说的是家庭类型,大型公司暂时就先不要考虑。

同学的公司差不多都打不通。看来保护性做的还是很好。

连通也有好几套方案,具体说简单的就是会合类型,直接设置属性,然后不通过bind和listen状态,直接开始连接,就是传说中三次握手行为。

当然,由于联合方式使用的是同一个SOCKET,但是是不同的SOCK_ID,UDT设计比较好的一个方面就是每一个SOCK_ID都有自己的sendbuffer和recvbuffer和核心模块CUDT。

如此,在连接服务器的状态下,还可以再新建其他类型。当然具体操作的话,就需要自己组合逻辑。

UDT现在使用的唯一感觉不爽的地方就是使用流协议形式,没有TCP用的方便,当然好像就是少了一个接收缓存,当然UDT一定是有接收缓存的的,我的是组包。

调用方式,每一个SOCK_ID都可以找到对应的CUDT核心模块,然后通过它才可以做所有的事情。

sendbuffer和recvbuffer 会根据你选用的SOCKET类型来选择里面不同的接口,比如是recvmsg还是recv还是recvfile。对应里面readmsg,readdata和readfile,具体名称没记全,好像就是这个意思。

这现在说的是整体思路,后面要根据功能一个一个模块来搞一搞。


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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值