当前位置: 首页 > news >正文

让 Win10 上网本 Debug 模式 QUDPSocket 信号槽 收发不丢包的方法总结

在前两篇文章里,我们探讨了不少UDP丢包的解决方案。经过几年的摸索测试,其实方法非常简单, 无需修改代码。

1. Windows 下设置UDP缓存

这个方法可以一劳永逸解决UDP的收发丢包问题,只要添加注册表项目并重启即可。即使用Qt的信号与槽,QUdpSocket用信号-槽在Debug模式下也一包不丢。把下文存储为“udp.reg”,而后双击,即可修改注册表。

Windows Registry Editor Version 5.00[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\AFD\Parameters]
"DefaultReceiveWindow"=dword:00100000
"FastSendDatagramThreshold"=dword:00002800
"DefaultSendWindow"=dword:00100000

设置好后,即使在Debug模式下,也一包不丢:

qtcpp_demo/udp_loss_test/build/debug/udp_loss_test.exe
Start...
QUdpSocket LOOP:Send 10000, Recv 10000, Lost 0.
Start...
QUdpSocket Signal and Slots:Send 10000, Recv 10000, Lost 0.
Start...
Local Socket :Send 10000, Recv 10000, Lost 0.
Finished sending. Closing socket.
Exiting.

2. Linux 下设置UDP缓存

Linux 下,默认的缓存已经足够了,Debug版本也不会丢包。如果需要,则设置缓存:

sudo sysctl -w net.core.rmem_default=100000
net.core.rmem_default = 100000
sudo sysctl -w net.core.rmem_max=1000000
net.core.rmem_max = 1000000

参考:
https://www.baeldung.com/linux/udp-socket-buffer

3. 代码级别的设置

想要单独用代码设置1个套接字的缓存,则使用:
(参考:https://blog.csdn.net/test1280/article/details/79776938)

    int  rcvBufSize = 1024*1024*16int optlen = sizeof(rcvBufSize);if (setsockopt(sockfd, SOL_SOCKET, SO_RCVBUF, &rcvBufSize, optlen) < 0){printf("setsockopt error=%d(%s)!!!\n", errno, strerror(errno));goto error;}printf("set udp socket(%d) recv buff size to %d OK!!!\n", sockfd, rcvBufSize);

4. 测试工程

测试工程参考:

https://gitcode.net/coloreaglestdio/qtcpp_demo/-/tree/master/udp_loss_test

5 效果

在上网本Intel® Celeron® CPU J1800 @ 2.41GHz 2.41 GHz下,Qt 6.8.0 MINGW64 Debug模式,

Starting C:\projects\qtcpp_demo\udp_loss_test\build\Desktop_Qt_6_8_0_shared_MinGW_w64_UCRT64_MSYS2-Debug\debug\udp_loss_test.exe...
Start...
QUdpSocket LOOP:Send 10000, Recv 10000, Lost 0.
Start...
QUdpSocket Signal and Slots:Send 10000, Recv 10000, Lost 0.
Start...
Local Socket :Send 10000, Recv 10000, Lost 0.
Finished sending. Closing socket.
Exiting.

UDP

相关文章:

让 Win10 上网本 Debug 模式 QUDPSocket 信号槽 收发不丢包的方法总结

在前两篇文章里&#xff0c;我们探讨了不少UDP丢包的解决方案。经过几年的摸索测试&#xff0c;其实方法非常简单, 无需修改代码。 1. Windows 下设置UDP缓存 这个方法可以一劳永逸解决UDP的收发丢包问题&#xff0c;只要添加注册表项目并重启即可。即使用Qt的信号与槽&#…...

Python爬虫之使用BeautifulSoup进行HTML Document文档的解析

BeautifulSoup 是一个用于解析 HTML 和 XML 文档的 Python 库&#xff0c;它为开发者提供了一种简单的方式来查找、遍历和修改文档树。BeautifulSoup 特别擅长处理不规则或格式不佳的标记语言&#xff0c;可以自动更正无效的 HTML&#xff0c;因此在网页抓取&#xff08;Web Sc…...

vue.config.js配置参数说明新手教程

这篇文章主要是对vue.config.js配置文件的主要参数进行一下说明&#xff0c;方便使用时的查询&#xff0c; 下面进行介绍 1、vue.config.js vue.config.js 是一个可选的配置文件&#xff0c;如果项目的 (和 package.json 同级的) 根目录中存在这个文件&#xff0c;那么它会被…...

C# 关于加密技术以及应用(二)

AES&#xff08;Advanced Encryption Standard&#xff09;和 RSA&#xff08;Rivest-Shamir-Adleman&#xff09;是两种不同的加密算法&#xff0c;它们各自有特定的使用场景和优势。下面是它们的主要区别和适用场景&#xff1a; AES&#xff08;高级加密标准&#xff09; 特…...

视频中的某些片段如何制作GIF表情包?

动态表情包&#xff08;GIF&#xff09;已经成为我们日常沟通中不可或缺的一部分。GIF&#xff08;Graphics Interchange Format&#xff09;&#xff0c;即图形交换格式&#xff0c;是一种支持多帧图像和透明度的位图文件格式。它最初由 CompuServe 公司在 1987 年推出&#x…...

图像识别 | Matlab基于卷积神经网络(CNN)的宝可梦识别源程序,GUI界面。附详细的运行说明。

图像识别 | Matlab基于卷积神经网络(CNN)的宝可梦识别源程序&#xff0c;GUI界面。附详细的运行说明。 目录 图像识别 | Matlab基于卷积神经网络(CNN)的宝可梦识别源程序&#xff0c;GUI界面。附详细的运行说明。预测效果基本介绍程序设计参考资料 预测效果 基本介绍 Matlab基…...

String【Redis对象篇】

&#x1f3c6; 作者简介&#xff1a;席万里 ⚡ 个人网站&#xff1a;https://dahua.bloggo.chat/ ✍️ 一名后端开发小趴菜&#xff0c;同时略懂Vue与React前端技术&#xff0c;也了解一点微信小程序开发。 &#x1f37b; 对计算机充满兴趣&#xff0c;愿意并且希望学习更多的技…...

top命令和系统负载

1 top中的字段说明 top是一个实时系统监视工具&#xff0c;可以动态展现出 CPU 使用率、内存使用情况、进程状态等信息&#xff0c;注意这些显示的文本不能直接使用 > 追加到文件中。 [rootvv~]# top -bn 1 | head top - 20:08:28 up 138 days, 10:29, 4 users, load av…...

ES6 混合 ES5学习记录

基础 数组 let arr [数据1&#xff0c;数据2&#xff0c;...数组n] 使用数组 数组名[索引] 数组长度 arr.length 操作数组 arr.push() 尾部添加一个,返回新长度 arr.unshift() 头部添加一个,返回新长度 arr.pop() 删除最后一个,并返回该元素的值 shift 删除第一个单元…...

HTTP 状态码大全

常见状态码 200 OK # 客户端请求成功 400 Bad Request # 客户端请求有语法错误 不能被服务器所理解 401 Unauthorized # 请求未经授权 这个状态代码必须和WWW- Authenticate 报头域一起使用 403 Forbidden # 服务器收到请求但是拒绝提供服务 404 Not Found # 请求资源不存…...

Redis学习(13)| Redisson 看门狗机制深度解析

文章目录 摘要1. 引言2. 看门狗的工作原理2.1 自动续期2.2 防止意外释放2.3 合理配置 3. 应用场景4. 最佳实践4.1 设置合理的lockWatchdogTimeout4.2 避免死锁4.3 监控和日志 5. 实现方式6. 使用示例7. 结论 摘要 Redisson 是一个用于 Redis 的 Java 客户端&#xff0c;它提供…...

【开源大屏】玩转开源积木BI,从0到1设计一个大屏

积木 BI 重磅推出免费大屏设计器&#xff01;功能超强大&#xff0c;操作超流畅&#xff0c;体验超酷炫。快来体验一下吧。 让我们一起来看一下如何从0到1设计一个大屏。 一、积木BI大屏介绍 积木BI可视化数据大屏 是一站式数据可视化展示平台&#xff0c;旨在帮助用户快速通…...

基于PCRLB的CMIMO雷达资源调度方法(MATLAB实现)

集中式多输入多输出CMIMO雷达作为一种新体制雷达&#xff0c;能够实现对多个目标的同时多波束探测&#xff0c;在多目标跟踪领域得到了广泛运用。自从2006年学者Haykin提出认知雷达理论&#xff0c;雷达资源分配问题就成为一个有实际应用价值的热点研究内容。本文基于目标跟踪的…...

PAT--1035 插入与归并

题目描述 根据维基百科的定义&#xff1a; 插入排序是迭代算法&#xff0c;逐一获得输入数据&#xff0c;逐步产生有序的输出序列。每步迭代中&#xff0c;算法从输入序列中取出一元素&#xff0c;将之插入有序序列中正确的位置。如此迭代直到全部元素有序。 归并排序进行如…...

Ubuntu20.04.6编译OpenWRT23.05.5错误

在Ubuntu20.04.6编译OpenWRT23.05.5时&#xff0c;会出现如下提示&#xff1a; fatal error: asm/types.h: No such file or directory 如果我们执行如下命令&#xff1a; sudo ln -s /usr/include/asm-generic /usr/include/asm 此时再次编译&#xff0c;会有如下提示&…...

一文说清flink从编码到部署上线

引言:目前flink的文章比较多,但一般都关注某一特定方面,很少有一个文章,从一个简单的例子入手,说清楚从编码、构建、部署全流程是怎么样的。所以编写本文,自己做个记录备查同时跟大家分享一下。本文以简单的mysql cdc为例展开说明。 环境说明:MySQL:5.7;flink:1.14.0…...

【5G】5G Physical Layer物理层(一)

5G多址接入和物理层与长期演进&#xff08;LTE&#xff09;存在一些差异。在下行方向&#xff0c;5G与LTE相似&#xff0c;依旧采用正交频分多址&#xff08;OFDMA&#xff09;。而在上行方向&#xff0c;5G采用了OFDMA和单载波频分多址&#xff08;SC-FDMA&#xff09;&#x…...

GauHuman阅读笔记【3D Human Modelling】

笔记目录 1. 基本信息2. 理解(个人初步理解,随时更改)3. 精读SummaryResearch Objective(s)Background / Problem StatementMethod(s)EvaluationConclusionReferences1. 基本信息 题目:GauHuman: Articulated Gaussian Splatting from Monocular Human Videos时间:2023.12…...

qemu安装arm64架构银河麒麟

qemu虚拟化软件&#xff0c;可以在一个平台上模拟另一个硬件平台&#xff0c;可以支持多种处理器架构。 一、安装 安装教程&#xff1a;https://blog.csdn.net/qq_36035382/article/details/125308044 下载链接&#xff1a;https://qemu.weilnetz.de/w64/2024/ 我下载的是 …...

在Elasticsearch (ES) 中,integer 和 integer_range的区别

在Elasticsearch (ES) 中,integer 和 integer_range 是两种不同的字段类型,它们用于存储和查询不同类型的数据。 Integer: integer 类型是用于存储32位整数值的简单数据类型。这个类型的字段适合用来表示单一的整数数值,例如用户的年龄、商品的数量等。支持标准的数值操作,…...

运放噪声深度解析:从原理到工程实践的计算与优化

1. 项目概述&#xff1a;为什么我们需要关心运放的噪声&#xff1f;如果你曾经调试过一个高精度的信号调理电路&#xff0c;比如一个微弱的传感器信号放大链路&#xff0c;或者一个高分辨率的ADC前端&#xff0c;你大概率遇到过这样的场景&#xff1a;理论上&#xff0c;你的电…...

SAP MIGO BADI增强实战:从自定义表到屏幕集成的完整指南

1. SAP MIGO BADI增强实战入门 第一次接到MIGO屏幕增强需求时&#xff0c;我完全理解那种既兴奋又忐忑的心情。兴奋是因为终于有机会深入SAP核心模块的增强开发&#xff0c;忐忑则是因为MIGO作为物料管理的核心事务&#xff0c;任何改动都可能影响整个业务流程。经过多个项目的…...

图解朱刘算法:用Python手搓最小树形图,搞定有向图最小生成树

图解朱刘算法&#xff1a;用Python手搓最小树形图&#xff0c;搞定有向图最小生成树 在算法学习的道路上&#xff0c;图论算法总是让人又爱又恨。今天我们要探讨的是一个特别的存在——朱刘算法&#xff08;Chu-Liu/Edmonds Algorithm&#xff09;&#xff0c;它能帮我们解决有…...

GraphGym高级特性:动态图学习与多任务图神经网络

GraphGym高级特性&#xff1a;动态图学习与多任务图神经网络 【免费下载链接】GraphGym Platform for designing and evaluating Graph Neural Networks (GNN) 项目地址: https://gitcode.com/gh_mirrors/gr/GraphGym GraphGym是一个强大的图神经网络&#xff08;GNN&am…...

国产多模态新星MiniGPT-4:从原理到落地,一篇讲透

国产多模态新星MiniGPT-4&#xff1a;从原理到落地&#xff0c;一篇讲透 引言 在ChatGPT点燃的AI浪潮中&#xff0c;多模态大模型被视为下一个关键赛点。当业界目光聚焦于GPT-4V等巨头产品时&#xff0c;一款名为 MiniGPT-4 的国产开源模型以其清晰的架构、惊艳的效果和极致的…...

5分钟上手Mermaid图表:无需代码的实时在线编辑器终极指南

5分钟上手Mermaid图表&#xff1a;无需代码的实时在线编辑器终极指南 【免费下载链接】mermaid-live-editor Edit, preview and share mermaid charts/diagrams. New implementation of the live editor. 项目地址: https://gitcode.com/GitHub_Trending/me/mermaid-live-edi…...

树莓派SPI驱动TFT显示屏:从硬件连接到Python图形编程实战

1. 项目概述与核心价值如果你手头有一块闲置的树莓派&#xff0c;想给它配个小屏幕做个状态监控器、迷你信息站&#xff0c;或者DIY一个便携游戏机&#xff0c;那么连接一块TFT显示屏几乎是必经之路。但当你真正动手时&#xff0c;可能会被一堆引脚、SPI、驱动芯片这些术语搞得…...

ElevenLabs古吉拉特文语音合成失效排查手册(97.3%开发者忽略的ISO 639-2语言码陷阱)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;ElevenLabs古吉拉特文语音合成失效的根本诱因 ElevenLabs 官方 API 文档明确标注支持 Gujarati&#xff08;gu-IN&#xff09;语言标识&#xff0c;但实际调用时持续返回 400 Bad Request 或静音音频&…...

Lancet Digit Health(IF=24.1)广东省人民医院刘再毅amp;南方医科大学南方医院梁莉等团队:基于可解释深度学习模型预测胶质瘤分子改变

01文献学习今天分享的文献是由广东省人民医院放射科刘再毅、南方医科大学南方医院梁莉等团队于2026年5月11日在柳叶刀旗下数字健康领域顶刊《The Lancet Digital Health》&#xff08;中科院1区top&#xff0c;IF24.1&#xff09;上发表的研究“Molecular alterations predicti…...

Unity多语言本地化新方案:基于GPT的自动化工具设计与实战

1. 项目概述&#xff1a;当Unity项目需要多语言&#xff0c;我们为何选择本地化GPT 在Unity项目开发中&#xff0c;尤其是面向全球市场的游戏或应用&#xff0c;多语言本地化&#xff08;Localization&#xff09;是一个绕不开的“硬骨头”。传统的本地化流程&#xff0c;通常需…...