天天看点

QT应用编程: windows下使用UDT传输协议_创建工程示例(高速数据传输)

一、环境介绍

操作系统: 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/
QT应用编程: windows下使用UDT传输协议_创建工程示例(高速数据传输)
UDT 项目源码官方下载地址:   https://sourceforge.net/projects/udt/ CSDN 下载地址: https://download.csdn.net/download/xiaolong1126626497/17780754
QT应用编程: windows下使用UDT传输协议_创建工程示例(高速数据传输)

四、QtCreator里使用UDT源码

环境是windows10 ,编译使用 mingw32

4.1  下载的文件解压
QT应用编程: windows下使用UDT传输协议_创建工程示例(高速数据传输)
4.2  将src目录下全部文件加入到工程
QT应用编程: windows下使用UDT传输协议_创建工程示例(高速数据传输)

4.3 修改文件解决错误

(1)   修改common.h文件56行 ----解决重定义问题

修改前:
 
#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      
QT应用编程: windows下使用UDT传输协议_创建工程示例(高速数据传输)

(2)  修改其他用到pthread_t和pthread_key_t的地方(照着第一步的改)

api.h的248行

common.h的58行

queue.h的406行和466行

QT应用编程: windows下使用UDT传输协议_创建工程示例(高速数据传输)

(3). 修改udt.h的88行

//#define UDT_API __declspec(dllimport)
#define UDT_API      
QT应用编程: windows下使用UDT传输协议_创建工程示例(高速数据传输)

(4). xxx.pro文件

加上:
LIBS += -lwsock32
LIBS += -lws2_32