锐英源软件
第一信赖

精通

英语

开源

擅长

开发

培训

胸怀四海 

第一信赖

当前位置:锐英源 / UDT / UDT培训视频演示
服务方向
人工智能数据处理
人工智能培训
kaldi数据准备
小语种语音识别
语音识别标注
语音识别系统
语音识别转文字
kaldi开发技术服务
软件开发
运动控制卡上位机
机械加工软件
软件开发培训
Java 安卓移动开发
VC++
C#软件
汇编和破解
驱动开发
联系方式
固话:0371-63888850
手机:138-0381-0136
Q Q:396806883
微信:ryysoft

锐英源精品开源心得,转载请注明:“锐英源www.wisestudy.cn,孙老师作品,电话13803810136。”需要全文内容也请联系孙老师。


简介


UDT的目的是加快通信效率,它的历史背景和组成这里就不多说了。通过UDT学习,掌握处理通信数据的方法,掌握通信协议的设计,掌握通信处理的线程架构方式,会极大提升程序员架构能力。另外UDT的代码量也比较大,通过阅读也能提升阅读能力。

展示

因为UDT的科研价值高,这里不便列出部分视频,只列举了视频的几个部分截取为gif

UDT类架构

UDT类架构

CEpoll和CEPollDesc

 

CGuard

 

CMsgNo

 

CTimer

 

 

UDT通信技术

UDT通信技术

int CEPoll::wait(const int eid, set<UDTSOCKET>* readfds, set<UDTSOCKET>* writefds, int64_t msTimeOut, set<SYSSOCKET>* lrfds, set<SYSSOCKET>* lwfds)

这函数里Win模式下代码的核心是:select。select函数的目的是监听SOCKET事件。我们都知道,SOCKET的函数,比如read,在以阻塞模式运行时,如果无数据可读,则会阻塞一段时间,到达超时时间或有数据时才返回,阻塞会影响线程运行,会导致线程功能失效。所以先判断有没有事件,再进行动作,这是基本的开发要求。

 

1-4握手控制包

80 00 00 00 握手协议控制包 4次
4*72

5-6,收-》发,数据包,发送文件参数

74 ea e9 d4数据包 c0 00 00 01 c转化为1100,“11”表示消息仅含有唯一的包;该包里包含了文件名

 

CRcvLossList


CRcvLossList* m_pRcvLossList; // Receiver loss list

在UDT里添加信息,删除信息,获取辅助信息指导控制。
它本身的数据结构算法通过find函数,可以粗浅理解为类似FAT表里文件占用扇区这样,有向下链表和向上链表。

接收端丢失链表(Receiver’s Loss List):是包含“二元组和一个参数”的链表。
二元组包括:检测到的丢失数据包的序列号,最新丢包的反馈时间;一个参数k
是每一个丢失包被NAK反馈的次数。节点元素按照包序列号的升序进行排序。

添加是从processData里完成,有丢失就添加。
删除是从processCtrl里完成,通过控制包的处理来删除丢失数据。

 

友情链接
版权所有 Copyright(c)2004-2024 锐英源软件
统一社会信用代码:91410105098562502G 豫ICP备08007559号 最佳分辨率 1440*900
地址:郑州市金水区文化路97号郑州大学北区院内南门附近