qtcpsocket send and recieve the image from youself

点击打开链接

Thanks alot all of you, especially Thiago,


I finally got it working. The trick was to read the data after the
QTcpSocket connection was closed rather than reading it when
readyRead() was emitted.

Here is my server code:

QByteArray block;
QDataStream out(&block, QIODevice::WriteOnly);
out.setVersion(QDataStream::Qt_4_7);
out << ui->lblScreenShot->pixmap()->toImage();
QTcpSocket *client = pixmapServer->nextPendingConnection();
connect (client, SIGNAL(disconnected()), client, SLOT(deleteLater()));
client->write(block);
qDebug() << block.size();
client->disconnectFromHost();

It reads the QPixmap from a label, and here is the client code:

QDataStream in(socket);
in.setVersion(QDataStream::Qt_4_7);
QImage img;
in >> img;
ui->screenshotLabel->setPixmap(QPixmap::fromImage(img));

As you can see, its all so choppy, but at least I can start up from there.

Thanks.

____________________________________________-

That is correct.

But note you said "once you've read all the data". So the question is still:
how do you know that you've read it all and that no bytes remain, still to be
received by the network?

There are usually two ways of doing this (from your "programming 101" class):

- send the length in advance
- send a sentinel afterwards

C strings use a sentinel afterwards (the NUL). You can't send a specific byte
sequence since the data you're sending is arbitrary and binary. So the only
sentinel you can send is the "connection close".

Given that the OP was closing the socket just after writing the pixmap data,
then sending the length in advance is unnecessary. Conclusion:

Sender:
connect(socket, SIGNAL(disconnected()), socket, SLOT(deleteLater()));
socket->connectToHost(...);
socket->write(block);
socket->disconnectFromHost();
socket = 0;

Receiver:
socket = server->nextPendingConnection();
connect(socket, SIGNAL(disconnected()), this, SLOT(readAllData()));

void readAllData()
{
QByteArray data = socket->readAll();
delete socket;
}


QT的学习第四部分 本文介绍Qt与Linux V4L2框架下摄像头及音视频处理实现。基于Qt的QCamera与QCameraViewfinder类可便捷实现预览与拍照,需在pro文件添加multimedia和multimediawidgets插件。通过V4L2框架可深入控制摄像头参数、缓冲队列及图像采集流程,实现高精度视频捕获。结合FFmpeg与mplayer工具,可在Linux下完成音视频播放、格式转换与流媒体处理。整体涵盖从硬件接口到应用层开发的完整技术链路,适用于嵌入式多媒体系统开发。 阅读详情

相关推荐

Adams与matlab联合仿真的一些小技巧

Adams与simulink联合仿真之快速设置初值 去年到现在一直做的两个项目要用到Adams与simulnk联合仿真,虽然网上有很多这方面的教程,但都比较基本,要实现一些稍微复杂的要求就比较困难了,比如我需要改变模型的初始位姿,原来的方式是在adams中设置,再生成联合仿真需要的文件,再在matlab中进行调用和仿真,如果工况多的话这样就特别耗时耗力,进过长时间的摸索,终于找出了在matlab中直接改变Adams模型参数的方法,下面具体说明一下。 我这里的模型是一个小球通过弹簧连接在坐标原点,仿真开始后

weixin_40962901的博客 4785

STM32C5深度解析:Cortex-M33内核与CAN-FD外设的实战选型指南

MCU选型中,内核架构与外设资源是决定系统性能与成本的关键。Cortex-M33内核在指令效率、中断响应和TrustZone安全扩展上较前代显著提升,配合CAN-FD、高精度ADC等外设,可满足工业控制与物联网终端对实时通信和数据处理的需求。STM32C5正是基于这一架构的主流级通用MCU,在性能、外设、价格与生态间取得均衡,适合F103/G030升级及新项目选型。

weixin_34262482的博客 162

VSCode + ESP-IDF 项目搭建及配置

VSCode 搭建 ESP-IDF 开发环境

weixin_51358957的博客 2万+

【Qt 学习之路】QTcpSocket发送图片(或大文件)Demo

先看一下效果: 思路: 发图片、大文件与发短字符不大一样。 1、文件和图片通过TCP可能一次发不过去,可能要发很多次。所以我们在发送文件、数据、以及文字最好带上文件的大小。 2、图片转换成文件流的形式,这个Demo是转成base64加密流 核心代码: 1、tcp客户端与服务端的代码这里就不贴了,以前贴过,可以看我以前的帖子。这里贴一下思路代码: 发送图片端:

沙师弟专栏 1万+

Microsoft Defender防病毒扫描添加排除项

Win10与Win11上的“**Microsoft Defender防病毒**”功能默认会自动扫描所有非压缩文件,如果发现病毒或疑似病毒甚至经过手动修改后某些安装文件,会自动将其删除,如果是后面两种情况,则可能会造成误报,对我们正常办公或学习造成不利影响。 此时, 我们可以将某个目录或文件设置为“**Microsoft Defender防病毒不会扫描已排除的项目**”(<red>但要注意:这些被排除的目录或文件会给笔记本造成一定的安全风险,如果真有病毒感染这些目录或文件它们也不会被“**Micr

weixin_42148668的博客 6481

Tessent --- PDL

当关联的ICL模块是当前ICL顶部模块时,即当它与当前设计匹配时,只能iCall一个iTopProc。但是,可以在iTopProc内调用iCall iProc或iTopProc。为指定后续iProc命令引用的ICL模块,发出这个命令之后,随后定义的iProc都会对应的ICL模块进行定义。为后续iCall调用,当使用iCall命令调用该过程时,参数列表中的变量将被替换为iCall命令中指定的值。在调用iProc时,运行iProc内的命令。PDL是面向工程师的,工程师利用PDL语言,对ICL中的单元进行控制。

qiantianyiqian的博客 2786

qtcpsocket send and recieve image

点击打开链接 Hi All, I have two simple applications which are network based. The 'server' takes a screenshot of its computer. When a 'client' connects, it will receive the captured image. These are basic...

weixin_33705053的博客 125

CTFmisc-------Jack

每一个文件里面都有不一样的base64编码,我尝试将其解密,发现解出来的是乱码,所以我想到真正的flag藏在这些字符串中,所以我们要写代码把字符串提取出来。提取出来后,得到很多的base64的编码,要一个一个的解码很麻烦,猜到里面有flag字样的base64编码,所以我们将flag进行base64编码,1.下载得到Jack文件夹,里面有很多的txt文件。发现这个字符串是众多编码中唯一一个没有==然后从那些base编码中寻找Zmxh字段。

woshicainiao666的博客 1万+

QTcpSocket 使用QDataStream 发送和保存图片文件

图片文件 现在遇到的问题是writeRawData()读取大文件时程序崩溃,思路是分多次进行读取和发送,待写 发送端 qDebug()&amp;amp;lt;&amp;amp;lt;&amp;quot;start to find pix&amp;quot;&amp;amp;lt;&amp;amp;lt;endl; QImage pic(&amp;quot;D:/svn//timg.jpg&amp;quot;); if(pic.

叶落随风 6714

TMP112/TMP102温度传感器驱动开发与嵌入式实战

数字温度传感器是嵌入式系统环境感知的核心器件,其通过I²C等标准总线实现高精度、低功耗测温。原理上依赖ΔΣ模数转换与二进制补码数据格式,结合寄存器配置实现模式控制、阈值报警与功耗管理。技术价值体现在±0.5°C级精度、1μA级静态电流及SOT-563超小封装带来的系统集成优势。广泛应用于工业MCU热监控、电池物联网终端、医疗电子温度补偿及汽车ECU板级测温等场景。本文围绕TMP112/TMP102展开,深入解析寄存器协议、硬件接口约束、HAL驱动分层设计、FreeRTOS任务调度及生产级校准方法,覆盖从芯片

weixin_35756690的博客 674

【STK】手把手教你利用STK进行光电红外仿真04-STK/EOIR模块的实战操作1航天器星载相机对LEO卫星成像

今天引入一个实际的场景,帮助大家完成对于这个模块的理解与运用。

weixin_44184852的博客 2417

如何用QTcpSocket传送图片

我们知道,tcp网络编程发送数据是利用套接字来实现,将要传输的东西转化为数据流再进行传输,为了确保数据传输的准确性和安全性,我们在发送数据流前发送一个quint32的常量来表示所要发送的数据的大小;当我们要发送图片时,最关键的是获得图片的大小: QBuffer buffer;

厦门Linux嵌入式+Qt开发 1万+

简要介绍 | 两阶段点云目标检测:理论与实践

目标检测是计算机视觉中的一个重要任务,其目的是识别和定位图像中的物体。对于二维图像,这已经有许多有效的方法。然而,对于三维数据(如由LiDAR生成的点云数据),目标检测则更为复杂。

NLOS的博客 1307

对于Qt:QTableWidget常见属性以及QTableWidgetItem类的解析

本文详细介绍了Qt中的QTableWidget控件和QTableWidgetItem类,它们是处理二维表格数据的核心组件。主要内容包括: QTableWidgetItem类详解: 核心方法:row()/column()获取位置,setText()/text()设置文本,setIcon()设置图标 样式控制:setTextAlignment()对齐方式,setFont()字体,setSizeHint()尺寸 QTableWidget核心操作: 单元格管理:item()获取单元格,setItem()设置单元格

2503_92929084的博客 106

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Qt QBuffer 详解:内存缓冲区读写与实战用法

QBuffer 是 Qt 中用于内存缓冲区读写的 QIODevice 实现,可将 QByteArray 作为“文件”进行随机访问。它支持 open()、read()、write()、seek() 等操作,常用于数据序列化(配合 QDataStream)、内存加载图片、适配仅接受 QIODevice* 的 API。使用时需注意:必须先 open(),写后需 seek(0) 才能读取;若传入外部 QByteArray,其生命周期须长于 QBuffer。适用于小到中等规模内存数据处理,大文件应避免使用。

本博客分享软硬件一体化开发实战。硬件涵盖 PCB 设计、STM32 等 MCU 底层开发;软件包含 C++、Rust,Qt/QML、PyQt、Slint、TouchGFX、LVGL 各类 GUI 框架。方便软硬件开发者查阅学习。欢迎关注! 554

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Qt_03界面类型

Qt的界面类型

u012660296的博客 191

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Qt 内嵌页面能显示、按钮调用桌面功能时报 Qt6WebChannel.dll?查桥接层

Qt 桌面程序里的内嵌 HTML 面板能显示静态内容,但点击“读取本地任务”才报 Qt6WebChannel.dll。先保存构建清单,用脱敏测试任务重现;页面能加载不等于 JavaScript 与 C++ 的桥接层也完整。应先确认准确弹窗,再排查模块和页面脚本。 ## Qt6WebChannel.dll 的来源与桥接组件版本 查看发行包里 Qt6Core.d

2301_78581598的博客 205

【Qt】系统相关:UDP 回显服务器

🎬 艾莉丝的简介:QUdpSocket 封装 UDP 套接字描述符,基于 Qt 信号槽机制实现事件驱动 I/O,默认走非阻塞模型。QNetworkDatagram 表示一个完整 UDP 数据报,封装载荷数据、源/目的 IP 与源/目的端口。端口号为 16 位无符号整数,取值范围 0–65535,按 IANA 划分为四段。必须引入 network 模块,否则编译器无法定位 QUdpSocket 头文件。 引入模块后仍提示找不到头文件:执行 qmake 重新解析 .pro,触发工程重新构建。 2.0.2

艾莉丝努力练剑的博客,感谢大家一直以来的对艾莉丝的支持和鼓励,uu们如果对C/C++方向感兴趣的话,可以通过艾莉丝主页的微信名片加艾莉丝的好友,和努力练剑的艾莉丝一起加油! 644

Windows/Linux下强实时运动控制内核(二):基于Qt的Delta机械手的开发应用

强实时运动控制内核MotionRT750下Qt开发Delta机械手的完整开发流程。

weixin_57350300的博客 241

对于Qt:QListWidget常见属性以及QListWidgetItem类的解析

本文全面解析了Qt中的QListWidget和QListWidgetItem组件。QListWidget是用于纵向展示列表的核心控件,支持条目增删改查、排序、换行等功能;QListWidgetItem则是列表中的单个条目,可定制文本、图标、字体、对齐等属性。 文章详细讲解了: QListWidgetItem的核心方法:设置文本/字体/图标、隐藏/显示、尺寸、选中状态等 QListWidget的关键属性:当前行号、条目总数、对齐方式、间距、排序等 列表操作方法:添加/插入/删除条目、获取当前选中项等 交互信号

2503_92929084的博客 125

Qt信号与槽机(3)

Qt信号与槽机制支持多种连接方式:一对一(信号连槽或信号连信号)、一对多(一个信号连接多个槽)及多对一(多个信号连接同一槽)。通过connect()函数实现,如connect(sender, &A::sig, receiver, &B::slot)。一对一用于单一响应,一对多可触发多个操作,多对一则实现多源统一处理,灵活高效地构建事件驱动程序。

我的博客 223
上一篇: qtcpsocket send and recieve image
下一篇: 怎么在网页中调用netmeeting使用阿?
Qicz
博客等级 码龄16年 56粉丝 122原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值