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

本文涉及的产品
数据传输服务 DTS,同步至DuckDB 3个月
简介: 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
相关实践学习
自建数据库迁移到云数据库
本场景将引导您将网站的自建数据库平滑迁移至云数据库RDS。通过使用RDS,您可以获得稳定、可靠和安全的企业级数据库服务,可以更加专注于发展核心业务,无需过多担心数据库的管理和维护。
Sqoop 企业级大数据迁移方案实战
Sqoop是一个用于在Hadoop和关系数据库服务器之间传输数据的工具。它用于从关系数据库(如MySQL,Oracle)导入数据到Hadoop HDFS,并从Hadoop文件系统导出到关系数据库。 本课程主要讲解了Sqoop的设计思想及原理、部署安装及配置、详细具体的使用方法技巧与实操案例、企业级任务管理等。结合日常工作实践,培养解决实际问题的能力。本课程由黑马程序员提供。
目录
相关文章
|
网络协议 容器
【qt】 TCP编程小项目
【qt】 TCP编程小项目
381 0
|
监控 API 数据处理
局域网监控软件中基于UDP协议的数据传输代码实现
本文介绍了在局域网监控系统中,使用UDP协议进行数据传输的实现。示例代码展示了如何用Python创建UDP套接字,接收并处理监控数据。处理后的数据可通过网站API自动提交到网站,例如利用requests库发送HTTP POST请求。这种方法便于实现监控数据的自动化提交和展示,提升效率与安全性。
484 7
|
SQL Java 数据库连接
Apache Doris 支持 Arrow Flight SQL 协议,数据传输效率实现百倍飞跃
近年来,随着数据科学、数据湖分析等场景的兴起,对数据读取和传输速度提出更高的要求。而 JDBC/ODBC 作为与数据库交互的主流标准,在应对大规模数据读取和传输时显得力不从心,无法满足高性能、低延迟等数据处理需求。为提供更高效的数据传输方案,Apache Doris 在 2.1 版本中基于 Arrow Flight SQL 协议实现了高速数据传输链路,使得数据传输性能实现百倍飞跃。
1245 0
|
算法 数据可视化 程序员
【Qt UI】调色板QPalette类在Qt编程中的应用
【Qt UI】调色板QPalette类在Qt编程中的应用
1104 0
|
8月前
|
监控 编译器 Windows
Qt5实现Windows平台串口通信
Qt5实现Windows平台串口通信
|
监控 安全 搜索推荐
设置 HTTPS 协议以确保数据传输的安全性
设置 HTTPS 协议以确保数据传输的安全性
|
存储 算法 C++
【Qt应用开发】复刻经典:基于Qt实现Windows风格计算器(加减乘除、删除、归零功能全解析)
在Qt中,"栈"的概念主要体现在两个层面:一是程序设计中的数据结构——栈(Stack),二是用户界面管理中的QStackedWidget控件。下面我将分别简要介绍这两个方面:
650 4
|
人工智能 数据处理 C#
AI Dev Gallery:微软开源 Windows AI 模型本地运行工具包和示例库,助理开发者快速集成 AI 功能
微软推出的AI Dev Gallery,为Windows开发者提供开源AI工具包和示例库,支持本地运行AI模型,提升开发效率。
1097 13
|
编译器 Windows
plugin cannot be loaded for module “QtQuick“ && Could not load the Qt platform plugin “windows“
本文讨论了在Qt应用程序中遇到的平台插件加载问题,包括具体的错误信息、解决方案和参考链接。问题表现为无法加载“QtQuick”模块的插件,并且无法找到“windows”平台插件。解决方案是修改环境变量`Qt5_DIR`以使用正确的Qt版本和编译器环境。
1419 2
|
网络协议 安全 算法
"网络世界的守护者:一探究竟TCP协议如何确保数据传输的绝对安全与可靠"
【8月更文挑战第20天】传输控制协议(TCP)是网络通信中的核心协议之一,它确保数据包能可靠、有序地从源头传输到目的地。TCP采用三次握手的方式建立连接,并通过序列号、确认应答及超时重传来保障数据传输的准确性。此外,TCP还具备流量控制与拥塞控制功能,避免网络拥塞。虽然TCP在可靠性上表现优异,但在快速传输场景中可能存在局限。深入理解TCP对于网络工程师和开发者至关重要。
574 1

推荐镜像

更多
  • qt