Qt中用QTcpSocket如何直接和显示 服务器发送的图片二进制流

Qt中用QTcpSocket如何直接和显示 服务器发送的图片二进制流,第1张

各位大侠们,由于对QT不熟悉,所以请大侠们多多指教
我现在服务端是C# ,发送了 转换为二进制流,已字节的形式发送,
------解决方案--------------------------------------------------------
假设你的二进制流放在char buffer[]里FILE fp;fp = fopen(testjpeg, wb);
if(fp != NULL){size_t ret = fwrite(buffer, sizeof(char), size, fp);
fclose(fp);}
------解决方案--------------------------------------------------------
只要严格按照发送协议和标准格式重新组合就可以了
------解决方案--------------------------------------------------------
流就是流,就是一串0101的数据,你传递的,就是这样的数据,不要把它理解成或者声音或者视频,它仅仅是01而已,关键点是,当你把这些01读到客户端的一个buffer中后(一楼的应该用unsigned char buffer[]吧),如何保存这些数据,你把这些数据写进一个jpeg文件,它就是一张,你把它写进一个txt文件,它就是一堆乱码
------解决方案--------------------------------------------------------
可能是您的BUFFER太小
------解决方案--------------------------------------------------------
QT中的也和你给的QT设备有关系的吧
------解决方案--------------------------------------------------------
全部弄完拼接起来,有带宽限制的 不可能一下子发送完毕吧
所谓细水长流~
哎呀 洒家又扯淡了。

QT4引用头文件和qt3不一样吧
你这样的话就不行了#include < QtNetwork h>
而是#include <QtNetwork>

TCP---传输控制协议,提供的是面向连接、可靠的字节流服务。当客户和服务器彼此交换数据前,必须先在双方之间建立一个TCP连接,之后才能传输数据。TCP提供超时重发,丢弃重复数据,检验数据,流量控制等功能,保证数据能从一端传到另一端。
UDP---用户数据报协议,是一个简单的面向数据报的运输层协议。UDP不提供可靠性,它只是把应用程序传给IP层的数据报发送出去,但是并不能保证它们能到达目的地。由于UDP在传输数据报前不用在客户和服务器之间建立一个连接,且没有超时重发等机制,故而传输速度很快
现在Internet上流行的协议是TCP/IP协议,该协议中对低于1024的端口都有确切的定义,他们对应着Internet上一些常见的服务。这些常见的服务可以分为使用TCP端口(面向连接)和使用UDP端口(面向无连接)两种。
说到TCP和UDP,首先要明白“连接”和“无连接”的含义,他们的关系可以用一个形象地比喻来说明,就是打电话和写信。两个人如果要通话,首先要建立连接——即打电话时的拨号,等待响应后——即接听电话后,才能相互传递信息,最后还要断开连接——即挂电话。写信就比较简单了,填写好收信人的地址后将信投入邮筒,收信人就可以收到了。从这个分析可以看出,建立连接可以在需要痛心地双方建立一个传递信息的通道,在发送方发送请求连接信息接收方响应后,由于是在接受方响应后才开始传递信息,而且是在一个通道中传送,因此接受方能比较完整地收到发送方发出的信息,即信息传递的可靠性比较高。但也正因为需要建立连接,使资源开销加大(在建立连接前必须等待接受方响应,传输信息过程中必须确认信息是否传到及断开连接时发出相应的信号等),独占一个通道,在断开连接钱不能建立另一个连接,即两人在通话过程中第三方不能打入电话。而无连接是一开始就发送信息(严格说来,这是没有开始、结束的),只是一次性的传递,是先不需要接受方的响应,因而在一定程度上也无法保证信息传递的可靠性了,就像写信一样,我们只是将信寄出去,却不能保证收信人一定可以收到。
TCP是面向连接的,有比较高的可靠性,
一些要求比较高的服务一般使用这个协议,如FTP、Telnet、SMTP、>我之前尝试不同线程 *** 作qtcpsocket,但是没有成功。好像不能在不同线程 *** 作的qtcpsocket对象的。
我自己的工程的做法是主线程创建了QTcpsocket,接收到信息,主线程进行处理。
如果子线程想要发送数据,通过信号发出,让主线程的qtcpsocket的槽接收。让主线程的槽完成发送。

自己做心跳保活。因为异常断开不属于qt的处理范围,而tcp协议栈又不存在自动处理异常断线的功能,tcp连接在不正常关闭情况下通常都会被协议栈保持存活一段时间(具体和 *** 作系统协议栈实现和设置有关)。qt无法获得tcp协议栈的状态消息,也就不会做出任何反应。所谓心跳机制请参照以下网址内容:

>

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/13442719.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-08-07
下一篇 2023-08-07

发表评论

登录后才能评论

评论列表(0条)

保存