一、环境介绍
操作系统: win10 64位
QT版本: QT5.12.6
编译器: MinGW 32
二、UDT传输协议介绍
UDT是基于UDP的数据传输协议(UDP-based Data Transfer Protocol,简称UDT)是一种互联网数据传输协议,UDT的主要目的是支持高速广域网上的海量数据传输。
UDT:打破数据传输瓶颈 UDT是一种可靠的基于UDP的应用程序级别数据传输协议,用于广域高速网络上的分布式数据密集型应用程序。UDT使用UDP通过其自己的可靠性控制和拥塞控制机制来传输批量数据。新协议可以比TCP更高的速度传输数据。UDT还是一个高度可配置的框架,可以容纳各种拥塞控制算法。
主要特征 快: UDT是为超高速网络设计的,已用于支持TB级数据集的全局数据传输。UDT是许多商用WAN加速产品中的核心技术。
公正: 并发的UDT流可以公平地共享可用带宽,而UDT也为TCP留有足够的带宽。
易于使用: UDT完全位于应用程序级别。用户只需下载该软件即可开始使用。无需内核重新配置。此外,UDT的API与传统的套接字API非常相似,因此可以轻松修改现有应用程序。
高度可配置的: UDT通过简单的配置即可支持用户定义的拥塞控制算法。用户还可以修改UDT以适应各种情况。学生和研究人员也可以使用此功能来研究新的控制算法。
防火墙友好: UDT完全基于UDP,这使得遍历防火墙更加容易。另外,多个UDT流可以共享一个UDP端口,因此防火墙只能为所有UDT连接打开一个UDP端口。UDT还支持交会连接设置。
开源UDT软件 UDT软件是一个C 库,其中包含UDT API实现和编程示例。最新版本是UDT版本4,包括3个独立的软件包:纯源代码,GNU软件包和预编译的WIN32 / i386版本。可以从UDT SourceForge项目网站下载所有UDT版本。
用户可以直接从CVS中签出最新代码。请注意,尽管CVS中的代码可能包含最新的错误修复和代码改进,但可能尚未经过全面测试,UDT支持Linux,Windows,OS X和BSD。
三、UDT源码下载
网站链接: https://udt.sourceforge.io/
UDT 项目源码官方下载地址: https://sourceforge.net/projects/udt/
CSDN 下载地址: https://download.csdn.net/download/xiaolong1126626497/17780754
四、QtCreator里使用UDT源码
环境是windows10 ,编译使用 mingw32
4.1 下载的文件解压
4.2 将src目录下全部文件加入到工程
4.3 修改文件解决错误
(1) 修改common.h文件56行 ----解决重定义问题
代码语言:javascript复制修改前:
#ifdef WIN32
// Windows compability
typedef HANDLE pthread_t;
typedef HANDLE pthread_mutex_t;
typedef HANDLE pthread_cond_t;
typedef DWORD pthread_key_t;
#endif
修改后:
#ifdef WIN32
// Windows compability
typedef HANDLE pthread_t_udt;
typedef HANDLE pthread_mutex_t;
typedef HANDLE pthread_cond_t;
typedef DWORD pthread_key_t_udt;
#endif
(2) 修改其他用到pthread_t和pthread_key_t的地方(照着第一步的改)
api.h的248行
common.h的58行
queue.h的406行和466行
(3). 修改udt.h的88行
代码语言:javascript复制//#define UDT_API __declspec(dllimport)
#define UDT_API
(4). xxx.pro文件
代码语言:javascript复制加上:
LIBS = -lwsock32
LIBS = -lws2_32