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

本文涉及的产品
数据传输服务 DTS,数据同步 small 3个月
推荐场景:
数据库上云
数据传输服务 DTS,数据迁移 small 3个月
推荐场景:
MySQL数据库上云
数据传输服务 DTS,数据同步 1个月
简介: 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/

image.png

UDT 项目源码官方下载地址:  https://sourceforge.net/projects/udt/

CSDN 下载地址:  https://download.csdn.net/download/xiaolong1126626497/17780754

image.png

四、QtCreator里使用UDT源码

环境是windows10 ,编译使用 mingw32

4.1  下载的文件解压

image.png

4.2  将src目录下全部文件加入到工程

image.png

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

image.png

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

api.h的248行

common.h的58行

queue.h的406行和466行

image.png

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

//#define UDT_API __declspec(dllimport)
#define UDT_API

image.png

(4). xxx.pro文件

加上:
LIBS += -lwsock32
LIBS += -lws2_32
相关实践学习
部署高可用架构
本场景主要介绍如何使用云服务器ECS、负载均衡SLB、云数据库RDS和数据传输服务产品来部署多可用区高可用架构。
Sqoop 企业级大数据迁移方案实战
Sqoop是一个用于在Hadoop和关系数据库服务器之间传输数据的工具。它用于从关系数据库(如MySQL,Oracle)导入数据到Hadoop HDFS,并从Hadoop文件系统导出到关系数据库。 本课程主要讲解了Sqoop的设计思想及原理、部署安装及配置、详细具体的使用方法技巧与实操案例、企业级任务管理等。结合日常工作实践,培养解决实际问题的能力。本课程由黑马程序员提供。
目录
相关文章
|
2月前
|
人工智能 API 调度
微软开源Windows桌面智能体操作系统!UFO²:一句话调度多应用,自动协同工作
UFO²是微软推出的Windows桌面多智能体操作系统,通过中央HostAgent协调多个AppAgent实现跨应用任务自动化,结合GUI交互和原生API调用提升执行效率,支持虚拟桌面隔离运行。
236 3
微软开源Windows桌面智能体操作系统!UFO²:一句话调度多应用,自动协同工作
|
7月前
|
安全 前端开发 Windows
Windows Electron 应用更新的原理是什么?揭秘 NsisUpdater
本文介绍了 Electron 应用在 Windows 中的更新原理,重点分析了 `NsisUpdater` 类的实现。该类利用 NSIS 脚本,通过初始化、检查更新、下载更新、验证签名和安装更新等步骤,确保应用的更新过程安全可靠。核心功能包括差异下载、签名验证和管理员权限处理,确保更新高效且安全。
179 4
Windows Electron 应用更新的原理是什么?揭秘 NsisUpdater
|
9月前
|
网络协议 API Windows
MASM32编程调用 API函数RtlIpv6AddressToString,windows 10 容易,Windows 7 折腾
MASM32编程调用 API函数RtlIpv6AddressToString,windows 10 容易,Windows 7 折腾
|
9月前
|
Windows
[原创]用MASM32编程获取windows类型
[原创]用MASM32编程获取windows类型
|
9月前
|
JavaScript 前端开发 API
MASM32编程通过WMI获取Windows计划任务
MASM32编程通过WMI获取Windows计划任务
|
8月前
|
XML 缓存 前端开发
Electron-builder 是如何打包 Windows 应用的?
本文首发于微信公众号“前端徐徐”,作者徐徐深入解析了 electron-builder 在 Windows 平台上的打包流程。文章详细介绍了 `winPackager.ts`、`AppxTarget.ts`、`MsiTarget.ts` 和 `NsisTarget.ts` 等核心文件,涵盖了目标创建、图标处理、代码签名、资源编辑、应用签名、性能优化等内容,并分别讲解了 AppX/MSIX、MSI 和 NSIS 安装程序的生成过程。通过这些内容,读者可以更好地理解和使用 electron-builder 进行 Windows 应用的打包和发布。
468 0
|
8月前
|
数据可视化 程序员 C#
C#中windows应用窗体程序的输入输出方法实例
C#中windows应用窗体程序的输入输出方法实例
141 0
|
10月前
|
Unix Linux Ruby
在windows和linux上高效快捷地发布Dash应用
在windows和linux上高效快捷地发布Dash应用
444 4
|
10月前
|
vr&ar C# 图形学
WPF与AR/VR的激情碰撞:解锁Windows Presentation Foundation应用新维度,探索增强现实与虚拟现实技术在现代UI设计中的无限可能与实战应用详解
【8月更文挑战第31天】增强现实(AR)与虚拟现实(VR)技术正迅速改变生活和工作方式,在游戏、教育及工业等领域展现出广泛应用前景。本文探讨如何在Windows Presentation Foundation(WPF)环境中实现AR/VR功能,通过具体示例代码展示整合过程。尽管WPF本身不直接支持AR/VR,但借助第三方库如Unity、Vuforia或OpenVR,可实现沉浸式体验。例如,通过Unity和Vuforia在WPF中创建AR应用,或利用OpenVR在WPF中集成VR功能,从而提升用户体验并拓展应用功能边界。
235 1
|
9月前
|
API Windows
MASM32编程获取Windows当前桌面主题名
MASM32编程获取Windows当前桌面主题名

推荐镜像

更多
  • qt