qt TCP接收数据遇到的问题

2023-10-27

项目负责利用TCP来传输一组大的数据,然后在接收函数里将接收的数组进行解包赋值。


从结果来看发现解包出来的数据都是错误的,几乎都是随机并且好几个值是负无穷。


这里就发现了QT的TCP传输机制,它将我的数据分两次接收,每一次是原来的一半。


例如我传3000字节大小,那么它会拆成两次1500,偶尔会出现2966和44或者一次满包的情况。


随着你传输数据越大,能一次性满包的概率越小。


我在项目里用的是readAll函数,并没有找到QT函数中能阻塞式接收指定数据大小的函数。


当然了数据过大会分包,数据过小的频繁传输会粘包。


又或者因为两次传输的时间分隔比较小,所以导致redyread只触发一次的问题都有可能遇到。


关于上述分包的解决办法是因为我知道数据包一次传输的大小。


所以再readAll后立即判断buff. size()的大小是否大于一次传输的大小 即>=3000


不是的话吧buff赋值给全局变量   第二次出发radyread信号 再通过append来拼接两个或者三个包。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

qt TCP接收数据遇到的问题 的相关文章

  • 拥塞控制域流量控制

    流量控制 也就是管理两端的流量 以免任一方向上因发送过块导致接收端溢出 或者因接收端处理太快而浪费时间的状态 具体包括 1 发送端的进程产生数据很慢 时不时的来个1字节数据 那么TCP就会1字节1字节的发送 效率很低 解决办法是建立一个时基
  • IM即时通讯实现原理

    即时通讯 Instant Messenger 简称IM 软件多是基于TCP IP和UDP进行通讯的 TCP IP和UDP都是建立在更低层的IP协议上的两种通讯传输协议 前 者是以数据流的形式 将传输数据经分割 打包后 通过两台机器之间建立起
  • 「Qt」事件概念

    0 引言 在本文所属专栏的前面的文章里 我们介绍了Qt的 信号 Signal 与 槽 Slot 机制 信号 Signal 与 槽 Slot 机制是 Qt 框架用于多个对象之间通信的 是 Qt 的核心特性 也是 Qt 与其他框架最大的不同之处
  • VS 静态库lib如何依赖动态库dll

    一般来说 vs可以提供正常的依赖输入窗口用于依赖动态库 但是当工程设置生成静态库之后 VS默认不支持给静态库增加依赖动态库 链接器选项没有了 此时只能够把静态库所依赖的动态库也改成静态库 这样这个静态库才能被正常编译 否则编译的时候会报错
  • 电脑连接西门子S7-200CPU的步骤

    用电脑连接S7 200CPU非常简单 先给CPU供电 然后用PPI通信电缆连接PLC和电脑即可 1 给S7 200CPU供电 下图给出了两种给S7 200供电的方式 直流供电和交流供电 2 连接RS 232 PPI电缆 注意 可以用USB转
  • QTcpSocket 发送数据心得

    遇到不会用的函数前 最好还是看看手册QAQ 今天居然吃了这个大亏 先交代一下背景 在做TCP客户端的发送数据功能 要和服务器程序进行TCP IP通信 且根据通信协议要发送数组或者结构体 并且数组的每一个位都是有效数据位 因此不能像大多数人一
  • SSL工作原理

    转自 https www wosign com Basic howsslwork htm SSL 是一个安全协议 它提供使用 TCP IP 的通信应用程序间的隐私与完整性 因特网的 超文本传输协议 HTTP 使用 SSL 来实现安全的通信
  • Android进程间通信(IPC)机制Binder介绍

    转载自 http blog csdn net luoshengyang article details 6618363 在Android系统中 每一个应用程序都是由一些Activity和Service组成的 这些Activity和Servi
  • Qt - 检测windows系统休眠

    Windows Qt方案 场景 1 产品搭建在一体机上 需要关机缓存配置和用户操作信息 2 面对用户的关机 休眠设置 软件需要保留用户设置 方案 virtual protected bool QWidget nativeEvent cons
  • Windows下的mingw-Qt开发环境安装及helloworld实现

    Windows下的mingw Qt开发环境安装及helloworld实现 我用的是Qt5 7 因此本次总结是基于Qt5 7 0的 我在自学的时候使用的IDE是Qt自带的Qt creator 上手简单 配置属于自己顺手的设置很方便 此外 如果
  • 【计算机网络】数据通信的基础知识

    通信系统的一般模型 数据通信系统的组成部分 源点 信源 产生数据 如从键盘输入 产生数字比特流 发送器 对数字比特流进行编码 如调制器 信道 是信号传输的通道 可能是一条简易的传输线路 也可能是一个复杂的网络 接收器 设备的功能与发送设备相
  • Qt QString字符串分割、截取的3种方法

    Qt QString字符串分割 截取 在做项目中不可避免的会使用到一串字符串中的一段字符 因此常常需要截取字符串 有两种方式可以解决这个问题 方法一 QString分割字符串 QString date dateEdit toString y
  • 【科普】CRC校验(一)什么是CRC校验?

    目录 CRC 循环冗余校验 CRC 校验码的生成 CRC 的发送方与接收方 发送方 接收方 除法异或运算示意图 CRC 循环冗余校验 CRC Cyclic Redundancy Check 循环冗余检验 是一种用于检测数字数据错误的技术 作
  • QT中日期和时间类

    QT中日期和时间类 QDate QTime QDateTime QDate QDate类可以封装日期信息也可以通过这个类得到日期相关的信息 包括 年 月 日 构造函数 QDate QDate QDate QDate int y int m
  • 《Qt快速入门》-- 信号与槽机制

    每一个图形开发语言 工具都有自己的一套的ui交互机制 Qt也不例外 Qt有自己独特的信号与槽机制用于ui与功能算法的交互 Qt的信号与槽机制包含以下三点 1 确定是哪个控件发出了信号 Who 2 确定发出了什么信号 What 3 确定这个信
  • QT进程间通信 详细介绍

    在QT中 信号和槽的机制取代了这种繁杂的 易崩溃的对象通信机制 信号是当对象状态改变时所发出的 槽是用来接收发射的信号并响应相应事件的类的成员函数 信号和槽的连接是通过connect 函数来实现的 AD 1 QT通信机制 为了更好的实现QT
  • Qt核心特性之 —— 「信号(Signal)与槽(Slot)」机制

    目录 1 Qt 与 Qt Creator简介 2 关于引用头文件的一些事儿 3 信号 Signal 与槽 Slot 机制 3 1 一个小例子 4 自定义信号与槽 4 1 运行效果 5 信号与槽的特性 6 Qt 4 版本以前 connect
  • QT之一个UI里边多界面切换

    QT之多界面交换 环境 VS2019 QT tools 从网上查看了许多大神的帖子 先将多界面切换的方法总结如下 1 可以通过QT Designer中添加Containers控件里的Stacked Widget实现同一个UI里的页面切换 可
  • 图片详解TCP连接的三次握手,四次断开基本原理

    图片详解TCP连接的三次握手 四次断开 作者 林子 Blog http blog csdn net u013011841 时间 2014年8月 出处 http blog csdn net u013011841 article details
  • 分布式系统详解--基础知识(通信)

    分布式系统详解 基础知识 通信 上一篇文章我们写到了 分布式系统详解 基础知识 线程 简单了解了一下线程的基本概念和线程和分布式的那斩不断理还乱的关系 今天再讲解一下它的另外一个必备知识 通信 进程之间进行通信是分布式的核心 失去了通信 也

随机推荐

  • Java集合基础知识必会(一)

    Java集合基础知识 一 Java集合是Java中一种非常重要的数据结构 它提供了一种方便而高效的方式来存储和处理数据 本文将介绍Java集合的基础知识 包括集合框架的概述 常见的集合接口和实现类 以及一些使用案例 集合框架概述 Java集
  • OpenCV 变换整幅图像的warpPerspective()函数——中心化坐标表示

    OpenCV自带的warpPerspective 函数 可以根据透视变换参数实现从一幅图像到另外一幅图像之间的映射变换 OpenCV为了保证坐标的对应关系 在一些情况下 会对变换的图像进行裁剪 以至于不能显示图像全貌 如图1所示 这限制了其
  • A. 运维体系 --- SLA理论体系

    A 运维体系 SLA理论体系 概述 SLA 是服务供应商与客户之间的服务等级协议 它定义了服务供应商应保证的服务质量 以及在服务不达标情况下的服务赔偿 SLA在定义上又细分为SLI SLO与SLA SLI 服务质量指标 服务的某项质量的一个
  • Linux将一个文件夹或文件夹下的所有内容复制到另一个文件夹

    1 将一个文件夹下的所有内容复制到另一个文件夹下 cp r home packageA home cp packageB 或 cp r home packageA home cp packageB 这两种方法效果是一样的 方法示例 2 将一
  • 201809-3元素选择器

    题目链接 题目描述 样例输入 11 5 html head title body h1 p subtitle div main h2 p none div p two p subtitle h3 div p div div p 样例输出 3
  • 适用于Windows的Xcode:在PC上安装Xcode的5种方法

    适用于Windows的Xcode 在PC上安装Xcode的5种方法 您的目标是开发iOS应用程序但是您没有可以支持Apple操作系统的计算机吗 您不必担心 因为您可以在Windows计算机上运行Xcode Xcode是一个值得信赖的macO
  • JavaWeb----SSM框架简单的搭建和使用---2021-07-22

    一 先对SSM矿建做个简单的介绍 大概先了解这是做啥的有啥用 下面是详细到每一步的保姆级教程 SSM简介 SSM Spring SpringMVC MyBatis 框架集由Spring MyBatis两个开源框架整合而成 SpringMVC
  • 从0到1搭建个人博客-Django(三)

    你好 我是goldsunC 让我们一起进步吧 从0到1搭建个人博客 Django 三 在以下链接快速回顾系列文章内容 从0到1搭建个人博客 Django 一 从0到1搭建个人博客 Django 二 本篇内容主要是一些框架概念性的东西 需要理
  • 数组知识初阶

    思维导图 目录 思维导图 1 一维数组 1 1一维数组的创建 1 2一维数组的初始化 1 3一维数组的使用 1 4一维数组在内存中的存储 2 二维数组 2 1二维数组的创建与初始化 2 3二维数组的使用 2 4二维数组的存储 3 数组越界
  • 配置基于域名的虚拟主机

    1 安装好apache之后 修改http conf文件 去掉Include conf extra httpd vhosts conf前的 Require all denied 改成 Require all granted 2 打开conf
  • 计算机网络-应用层

    应用层 应用层协议定义了运行在不同端系统上的应用程序进程如何相互传递报文 应用 Web 文件传输FTP 远程登录 电子邮件 域名 统一资源定位符URL 域名 由一串用 分隔的名字组成的Internet上某一台计算机或计算机组的名称 www
  • Unity TMP/Test 自适应文本

    Unity TMP Test 自适应文本 注意 Text组件 直接把脚本中所有的TextMeshProUGUI改为Text即可 TMP using System Collections using System Collections Ge
  • 对话OpenSea联创Alex:我们仍然只触及到NFT能力的冰山一角

    OpenSea是世界上最大的NFT交易市场 也是NFT行业爆发的最大赢家之一 但去年年底以来面临着被批不重视社区 中心化 竞争加剧等问题 近日 斯坦福大学加密团体Crypto Stanford对OpenSea的联合创始人兼前首席技术官 斯坦
  • C++构造函数的三种写法

    C 构造函数的三种写法 1 C 规定 对象的成员变量的初始化动作发生在进入构造函数本体之前 也就是说采用初始化列表的话 构造函数本体实际上不需要有任何操作 因此效率更高 关联 1 C 可以使用 小括号 大括号 直接赋值 并且 兼容了 C风格
  • C++ 将十进制数转换为二进制数方法

    本文介绍一种将十进制数转换为二进制数的方式 实现要点 1 用数组来存储每次对2取余的结果 2 两次使用for循环 分别进行转换和输出 3 取模运算 include
  • 【千律】OpenCV基础:图像外接矩形、最小外接矩形、凸包、外接圆、拟合椭圆的绘制

    环境 Python3 8 和 OpenCV 内容 图像外接矩形 最小外接矩形 凸包 外接圆 拟合椭圆的绘制 import cv2 as cv import numpy as np import matplotlib pyplot as pl
  • 显示iPhone已停用,连接iTunes 时,如何解锁又能保留数据

    本人手机是 iphone6 plus 因荧屏坏了无法使用 但主板没坏 只是看不到内容 所以不小心点到解锁界面太多次导致停用了 无可奈何去修完回来以后 才对手机进行了恢复停机的操作 首先 需要一台电脑 并安装了 iTunes 软件 手机先关机
  • 从零开始学习JavaScript:轻松掌握编程语言的核心技能①

    从零开始学习JavaScript 轻松掌握编程语言的核心技能 一 JavaScript 简介 为什么学习 JavaScript JavaScript 用法 二 JavaScript 输出 JavaScript 显示数据 JavaScript
  • linux时间校准步骤记录

    记录一下校准时间操作的执行步骤 首先使用 date 查看当前时间是否准确 校准时间命令 ntpdate cn pool ntp org 如果没有权限 sudo i 会出现输入密码 直接输入密码即可 再次执行校准时间操作命令 ntpdate
  • qt TCP接收数据遇到的问题

    项目负责利用TCP来传输一组大的数据 然后在接收函数里将接收的数组进行解包赋值 从结果来看发现解包出来的数据都是错误的 几乎都是随机并且好几个值是负无穷 这里就发现了QT的TCP传输机制 它将我的数据分两次接收 每一次是原来的一半 例如我传