我正在尝试通过QDataStream从客户端向服务器发送图像( OpenCV Mat )。 第一项是int,即缓冲区的大小。 它可以处理10到15张图片,然后服务器读取第一个int随机数(通常〜2 ^ 30),这会导致应用崩溃。 这是客户端,处于一个循环中(图像来自摄像头,周期为500ms):

//1) encode to jpg

cv::vector buf;

cv::imencode(".jpg", *mat, buf);

//2) write to buffer

QByteArray buffer;

QDataStream out(&buffer, QIODevice::WriteOnly);

out << int(0); // save place for an int which represents the buffer size

for(cv::vector::iterator it = buf.begin(); it != buf.end(); ++it)

{

out << *it; //write each byte

}

out.device()->seek(0); //write the buffer size

out << buffer.size();

qDebug() << "Sent " << buffer.size() << "bytes";

qint64 bytesSent = socket->write(buffer);

if(bytesSent < buffer.size())

{

if(bytesSent != -1)

{

qDebug() << "Transmit Error! Sent " << bytesSent << " out of " << buffer.size();

}

else

{

qDebug() << socket->errorString();

}

}

服务器端:

QDataStream in(socket);

int msgSize = -1;

//first read the size as an int

if(socket->bytesAvailable())

{

in >> msgSize;

}

qDebug() << "Read image size: " << msgSize << "bytes";

//wait until all bytes all available

while(socket->bytesAvailable() < ( qint64 ) ( ( qint64 )msgSize - sizeof(int) ) )

{

if(!socket->waitForReadyRead())

{

qDebug() << "Disconnected: " << socket->errorString();

socket->disconnectFromHost();

break;

}

}

qDebug() << "Bytes recieved: " << msgSize;

QByteArray ba;

quint8 byte;

for(int i = 0; i < msgSize - 1; ++i)

{

in >> byte;

ba.append(byte);

}

cv::Mat imgbuf = cv::Mat(FRAME_WIDTH, FRAME_HEIGHT, CV_8UC3, ba.data());

cv::Mat matImg = cv::imdecode(imgbuf, CV_LOAD_IMAGE_COLOR);

两个套接字都是QTcpSocket 。

输出示例:

The server side:

Read image size: 67551 bytes

Bytes recieved: 67551

Read image size: 56924 bytes

Bytes recieved: 56924

Read image size: 70027 bytes

Bytes recieved: 70027

Read image size: -2046830337 bytes

Bytes recieved: -2046830337

Read image size: -536866742 bytes

Bytes recieved: -536866742

Read image size: 1179207168 bytes

At this point it tries to read 1179207168 bytes.

The client side:

Sent 67551 bytes

Sent 56924 bytes

Sent 70027 bytes

Sent 70277 bytes

Sent 85633 bytes

Sent 65155 bytes

etc ...

只有前三个成功。

qt客户端显示服务器发送的图片,c++ - Qt客户端服务器应用程序“发送图像”出现问题 - 堆栈内存溢出...相关推荐

  1. ambari 修改服务器名,ambari - Ambari无法运行用于修改用户配置单元的自定义钩子 - 堆栈内存溢出...

    尝试通过Ambari(v2.7.3.0)(HDP 3.1.0.0-78)将客户端节点添加到群集,并看到奇数错误 stderr: Traceback (most recent call last): F ...

  2. 下载微信服务器上的图片到自己的服务器

    下载微信服务器上的图片到自己的服务器 微信上传图片后 单张图片将返回serverId 多张图片将返回serverId数组,后续只需遍历下载即可 下载微信服务器上的图片 工具类 ... import j ...

  3. Java代码服务器上下载图片_Java如何从服务器中下载图片

    import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net ...

  4. c 传图片数据给matlab,c++ - 如何通过UDP将数据从C ++应用程序发送到Matlab并进行绘制 - 堆栈内存溢出...

    我想使用Winsock通过UDP将数据从我的C ++应用程序发送到Matlab,并实时绘制数字. 例如:我得到了从1到10的数字,我想从C ++发送1,在Matlab中接收它,将其放在图形上(图,条等 ...

  5. android和flask交互,java - 当我从Android向Flask Web服务发送参数时,如何解决“ SSL库故障”? - 堆栈内存溢出...

    我确实尝试将一些值作为" application / json "从Android应用程序发送到Flask Web服务. 这是我的Java代码 : Thread thread = ...

  6. ie浏览器能显示ftp协议的图片_浏览器向服务器请求一张图片,到底发生了什么?...

    文章目录 动因 HTTPWATCH 用IE访问服务器端的一张png图片 观察数据 结论 本文说明了http协议传输图片的交互数据的过程和测试方法. 动因 学习编程,其实不在于编程本身.千万不要满足于会 ...

  7. android消息发送字符串,android - 从Android客户端通过HTTP在HL7消息中发送base64字符串时遇到错误 - 堆栈内存溢出...

    我正在android客户端(API 17)中使用HL7消息,并使用Hapi库生成和解析HL7消息.当我传输小的字符串值时,该消息工作正常. 但是我必须通过Http将图像发送到HL7服务器,为此,我正在 ...

  8. cloudtalk 无法连接到消息服务器,solr - Solr Cloud down无法与Zookeeper对话客户端会话超时 - 堆栈内存溢出...

    我有在16GB RAM内存上运行的solr云,用于分片的2个solr节点(相同ip),嵌入式zookeeper. 我在默认配置上运行solr,尽管默认配置随附-Xms5g-Xmx5g,但我在Solr仪 ...

  9. html图片按页码显示,html - 在打印html文档时显示页码 - 堆栈内存溢出

    几个月前,当我使用以下代码在浏览器(firefox)中打印HTML文档时,能够显示页码: body { width: 300px; counter-reset: page; } #header { b ...

最新文章

  1. php 语言文件操作,php中目录文件操作详谈
  2. idea findbugs使用_「测试」 - 静态测试 amp; FindBugs
  3. STL 之find,find_if,find_end,find_first_of
  4. RHQ指标的WildFly子系统
  5. Linux 命令之 tar 命令-打包和备份的归档工具(附压缩/解压工具)
  6. 今天看了风云II 后悔了
  7. Bootstrap3 模态对话框的尺寸
  8. python跳出两层(多层)循环--使用标志量
  9. 使用 Postman 调试 HTTP(s) 接口
  10. C# 最简单的异步委托
  11. DOM ------ 百度换肤
  12. 远程线程注入技术 屏蔽ctrl+alt+del
  13. yii mysql gii_YII-快速用gii创建一个简单的yii项目!
  14. Java入门第三天2-java循环嵌套
  15. 计算机专业二本可以考cfa,计算机专业的CFA考生的备考经验分享
  16. 【解释型语言】Python-IO
  17. 百度快照被劫持跳转到博彩网站 终极解决办法
  18. WMS系统具备的基本功能,你懂多少?
  19. 网上商城系统,安全重要性
  20. 如何将D盘空间压缩并扩展C盘?

热门文章

  1. 图片dpi是什么?图片dpi怎么调?
  2. 上天赐予的财富和才能要回馈社会
  3. 东南亚国家的商标注册小知识
  4. 线上商场比重不断上升 家电路径面临改造
  5. Android中级第五讲--GPRS定位的实现
  6. MySQL数据库的集群方案
  7. 一、为jupyter notebook 添加目录
  8. Qt MVC之自定义模型
  9. O2O对消费者有什么好处 O2O模式的消费者特征是怎么样的?
  10. 文字超出用省略号代替写法