QSocket的问题bytesAvailable()和readyread()有什么不同? [问题点数:40分]

Bbs1
本版专家分:0
结帖率 0%
Bbs6
本版专家分:5711
Bbs3
本版专家分:690
Bbs5
本版专家分:3184
Bbs3
本版专家分:732
QTcpSocket::readyread()信号从何而来?
如题,QTcpSocket::<em>readyread</em>()和QTcpServer::newConnection()这样的信号是从单独的子线程中发出么,就像QTimer那样? 请高手解惑。
Qt生成随机数
//老方法 //利用qrand和qsrand生成随机数 //位于QtGlobal中 //例,生成一个0和10之间的随机数 qsrand(QTime::currentTime().msec()); //设置种子,该种子作为qrand生成随机数的起始值,RAND_MAX为32767,即随机数在种子值到32767之间 qrand()%10; //新方法 //利用QRandomGenerator类 //...
Qt生成随机数的方法
1.生成随机数        生成随机数主要用到了函数qsrand和qrand,这两个函数在#include &amp;lt;QtGlobal&amp;gt;中,qsrand用来设置一个种子,该种子为qrand生成随机数的起始值。比如说qsrand(10),设置10为种子,那么qrand生成的随机数就在[10,32767]之间。而如果在qrand()前没有调用过qsrand(),那么qrand()就会自动调用qs...
Qt的QTcpSocket的readyRead信号使用体会
本文主要介绍<em>readyread</em>函数的触发机制,会涉及到一点tcp/ip和流的知识。tcp/ip和流这方面其他朋友介绍很多了,这里我就不再赘述。本文不打算使用太过专业的词汇,一方面主要目的是让大家明白,另一方面是我也不太专业。 一、<em>问题</em>描述: 你之所以会来看我这篇文章,大概是遇到了一下几个<em>问题</em>: 1、使用QTcpSocket时,<em>readyread</em>函数没有触发,或者触发了,但是触发次数不是自己想...
QUdpSocket接收效率问题
在未设置QAbstractSocket::ReceiveBufferSizeSocketOption,会出现丢帧的情况,设置了,数据会出现大量的积压。发送端每次发送1k字节,发送时间间隔约30us,发
QtcpSocket运行在子线程中,能通过bytesAvailable()得到字节数,但是不能读出数据
如题,求救一下啊,一下是我的代码 void NetWorkThread::run() { QTcpSocket *tcpSocket = new QTcpSocket; qDebug() << "GH
Qt:TCP协议中的readyRead信号
相关解释与理解:官方文档中对<em>readyread</em>函数解释很简短:    This signal is emitted once every time new data is available for reading from the device's current read channel. It will only be emitted again once new data is avail...
QT基本数据类型
QT的基本数据类型qint8:signed char 有符号8比特数据 qint16:signed short 16位数据类型 qint32:signed int. 32位有符号数据类型 qint64:long long int 或(__int64) 64位有符号数据类型,Windows中定义为__int64 qintptr:qint32 或 qint64 指针类型 根据系统类型
关于QSocket的释放的一个需要注意的情况
最近在用QtNetwork编写服务器程序进行TCP/IP通信,大体过程如下: 1. 创建一个QTcpServer实例,监听目标IP和端口; 2. 一旦监听到有连接,获取和客户端之间的socket; 3. 使用socket进行通信; 4. 通信结束后,可以手动释放socket,也可以不管它,在释放QTcpServer的时候会把其下的所有socket全部自动释放。 在编写时,我做了如
QTcpSocket如何设置超时
如题,QTcpSocket调用connectToHost()方法的时候默认的超时时间好像是30秒,这个时间如何设置短一些呢?
QTcpSocket : No such file or directory
QTcpSocket QTcpServer QtNetwork 等几个头文件编译时都提示找不到,不知道这是怎么回事,从 qtcreator 追踪这几个文件都能跟进去看到里面的定义,我用的是Ubuntu
请问qint64转换成int,该怎么转啊?~··求助啊
rt 请问qint64转换成int,该怎么转啊?~··求助啊
socket通信简介
“一切皆Socket!”话虽些许夸张,但是事实也是,现在的网络编程几乎都是用的socket。——有感于实际编程和开源项目研究。我们深谙信息交流的价值,那网络中进程之间如何通信,如我们每天打开浏览器浏览网页时,浏览器的进程怎么与web服务器通信的?当你用QQ聊天时,QQ进程怎么与服务器或你好友所在的QQ进程通信?这些都得靠socket?那什么是socket?socket的类型有哪些?还有socket的基本函数,这些都是本文想介绍的。本文的主要内容如下:1、网络中
QSocket
<em>QSocket</em>类提供了一个有缓冲的TCP连接。 详情请见…… #include &amp;lt;qsocket.h&amp;gt; 继承了QObject和QIODevice。 所有成员函数的列表。 公有成员 enum Error { ErrConnectionRefused, ErrHostNotFound, ErrSocketRead } <em>QSocket</em> ( QObject * pa...
QT:Qsocket长连接的实现(多线程服务器)
废话少说:直接上代码 PS:为了减少代码量,这里忽略了链接出错时的错误处理 //服务器端 //dialog.h #ifndef DIALOG_H #define DIALOG_H #include #include #include "fortuneserver.h" class Dialog : public QDialog { Q_OBJECT public:
【字节流】 复制各类格式文件,available()用方法
自我学习留记
使用QTcpSocket接收数据
最近,接到一个项目,是连接TCP后读取一个图片的数据,对方为了简化,直接发送数据的二进制格式,因此我必须连接后直接读取,然后在读取完成后进行保存。因为数据没有在开头加入大小信息,而TCP传输的时候并没有一次全部传输完成,只是默认传输一定量的数据,因此我必须时刻检验数据是否全部读取完毕,然后显示图片。最后,我没有想明白如何控制读取内容一次全部读取完成,只能使用笨办法,每次读取一段数据就将数据加入所有数
qint64转时间
void MediaPlay::updateTimeInfo(const qint64 &Position) { QString tStr; if (Position || m_duration) { QTime currentTime((Position/3600)%60, (Position/60)%60, Position%60, (Position*1000
Qt产生指定范围内随机数(随机字符串)
在编写QT项目时,产生随机数和随机字符串是十分常见的需求,使用qrand函数就能够实现 但是我们也知道,如果不使用种子的话,产生的随机数并不是真正的随机数,而是固定的数字 通常情况下,我们会使用当前时间作为随机数的种子,以产生真正意义上的随机数 Qt产生随机数代码如下: int MainWindow::getRandom(int min,int max) { qsrand(QTi...
Qt中文件读取的几种方式
1、直接用文件的按时读取,读取之后写在一个QString里面QByteArray ba=file.read(file.<em>bytesAvailable</em>()); QString text=QString(ba);2、直接用read读取,返回QByteArray,参数文件长度.QByteArrayba; ba.resize(file.<em>bytesAvailable</em>()); file.read(ba);3、QB
QSocket编程
本文档是基于QT5.9做的一个简单的socket网络通信小程序,可以实现客户端与服务器端的通信,请根据需求自行下载。
QT中readyRead()信号如何多次触发
一个可以登录注册的小聊天程序 qt做客户端 linux c写服务器 想在登录界面和聊天界面都用readyRead()信号触发自己写的readmessage()函数处理服务器发回来的消息 可是只有第一个次可以触发信号进入readmessage,其他时候都不行 求教
关于QSocket通讯的问题~~
<em>问题</em>是这样的: 1.在服务器端,将自己定义的类,直接通过<em>QSocket</em>写到网络; 2.在客户端,通过网络将自己定义的类读出来。 请问,应该如何实现呢,或者向哪个方向考虑可以解决这个<em>问题</em>?
TCP协议客户端与服务器端一般的通信过程
服务器初始化 (1)调用socket,创建文件描述符 (2)调用bind,将文件描述符与ip/port连接起来。若端口号已被占用,则bind失败 (3)调用listen,声明该文件描述符是服务器的一个文件描述符,为之后的accept做准备 (4)调用accept,并处于阻塞状态,等待客户端连接 建立连接 (1)调用socket,创建文件描述符 ...
QT中的数据类型qint8、qint16、qint32、qint64、qintptr、qlonglong、qttrdiff、qreal等的定义
typedef qint8 Typedef for signed char. This type is guaranteed to be 8-bit on all platforms supported by Qt. typedef for signed char,在Qt支持的所有平台上,此类型保证为8位。 typedef qint16 Typedef for signed short. ...
QTcpSocket发送数据和自定义数据
在网络应用中,有时候我们会遇到这样的<em>问题</em>,用TCP不断的接收和发送<em>不同</em>类型的数据,数据大小,格式都不相同,起初看了qt的例子,按照例子写的程序效果相当的不好,尤其是在连续发送大数据的时候,接收端根本无法判断数据是否完整了,也不知道什么时候取读取,经过各种折腾加上看qt源码,总结出了这个方法,发送的时候,要先发送这个数据序列化后的大小,然后发送这个数据本身,接收端,首先收到了要接收数据的大小,心里有
QUdpSocket-Qt使用Udp通讯实现服务端和客户端
版权声明:若无来源注明,Techie亮博客文章均为原创。 转载请以链接形式标明本文标题和地址: 本文标题:QUdpSocket-Qt使用Udp通讯实现服务端和客户端     本文地址:http://techieliang.com/2017/12/532/ 摘自:https://www.cnblogs.com/techiel/p/7978049.html https://blog.csdn.ne...
bytesAvailabel()函数了解
在Qt中,使用第三方的类QextSerialPort可以处理串口数据,具体方法百度有教程。 如果bytesAvailabel() return -1 ,表示从串口的数据缓冲区查看有多少个字节的数据失败了。 【解决方法】 在Qt处理串口时,有两个东西很主要,一个是串口数据,一个是缓冲区数据,<em>bytesAvailable</em>()其实查看的是数据缓冲区的数据个数,而不是串口的数据个数。 在串口设置中...
QT下udpsocket一段时间接收不到数据的问题
最近在做一个项目  采用UDPSOCKET进行数据的传输,发现在一段时间后,UDP接收不到数据了,找了很久的资料 才发现解决该<em>问题</em>的方法,估计不是最好的。代码如下: #include "mainwindow.h" #include "ui_mainwindow.h" #include MainWindow::MainWindow(QWidget *parent) : Q
QT 生成随机数 qsrand qrand
在QT程序中,生成随机数比较简单。两个函数: void qsrand(uint seed); int qrand(); 首先是初始化:qsrand() qsrand(QTime(0,0,0).secsTo(QTime::currentTime())); 接下来就可以生成随机数了: int a = qrand(); qrand()理论上返回0 到 RAND_MAX...
告知你不为人知的UDP-疑难杂症和使用
版权声明:本文由黄日成 原创文章,转载请注明出处:  文章原文链接:https://www.qcloud.com/community/article/848077001486437077 来源:腾云阁 https://www.qcloud.com/community   作者介绍:黄日成,手Q游戏中心后台开发,腾讯高级工程师。从事C++服务后台开发4年多,主要负责手Q游戏中
Qt开发笔记:QWebSocket客户端、服务端介绍与开发
若该文为原创文章,未经允许不得转载 原博主博客地址:https://blog.csdn.net/qq21497936 原博主博客导航:https://blog.csdn.net/qq21497936/article/details/102478062 本文章博客地址:https://blog.csdn.net/qq21497936/article/details/100547400 目录 前话...
c++中的int64(qt中的qint64),在java(android)中是什么
在tcp传输中。在c++里通常会用到int64来存放文件大小这些数据。 int64占8字节。也就是byte[8], 如果需要在java中取出来时,则需要对应的定义 在java中。int64,可以用BigInteger来定义。 也就是 BigInteger bigInt = new BigInteger(bytes);
QT中readyread()信号接收不到问题
在QT Creator里写一个接收端程序的时候,用到了一个connect(receiver, SIGNAL(readyRead()), this, SLOT(processPendingDatagra
QT--QSocketNotifier类介绍
<em>QSocket</em>Notifier 用来监听系统文件操作,将操作转换为Qt事件进入系统的消息循环队列。并调用预先设置的事件接受函数,处理事件。 一共存在3类事件:read,write,exception.       <em>QSocket</em>Notifier::Read 0 There is data to be read. <em>QSocket</em>Notifier::Wr
QTcpSocket发送接收数据时有大小限制吗?
发送端 QByteArray wbuf; wbug.append(....); long lenActualWritten; lenActualWritten = socket.write(wbuf)
【Qt5.8】Qt5.8中串口类QSerialPort
00. 目录 00. 目录 01. 串口通信基础 02. QtSerialPort模块简介 03. QSerialPort简介 04. QSerialPort类成员函数 05. 参考示例 01. 串口通信基础 串口通信(Serial Communications)的概念非常简单,串口按位(bit)发送和接收字节。尽管比按字节(byte)的并行通信慢,但是串口可以在使用一...
QT qrand()随机函数
在Qt中,生成随机数的函数为 qrand()。该函数是标准C++函数 rand 的线程安全版本。不过,如果我们仅仅只是调用该函数来生成随机数,那么每次得到的随机数都将是相同的,这是因为Qt生成的随机数严格来说是一个“伪随机”,它的产生是根据随机数种子计算得到的。如果种子相同,那么所得到的随机数也是相同的。 因此,为了使我们的随机数看起来更为“随机”一些,我们在每次获取随机数之前都需要初始化一个不...
Qt总结之二十三:QByteArray与char、int、float(及其数组)之间的互相转化
前言 因项目中,进程间通信使用UDP+TCP双通信方式,去传输大量数据(nTB数据),并在前端界面用OpenGL显示并绘制其波形。为防止丢帧导致图形出现波动,这里采用TCP确保数能够正常显示且刷新频率稳定。客户端和服务端之间通信, UDP中: 发送: qint64    writeDatagram(const char * data, qint64 size, const QHostA...
matlab中TCP通信的相关函数
matlab中TCP的通信常用属性介绍 下面是tcpip的属性: Name: TCP对象的名字 RemoteHost: 远程端的IP地址 RemotePort: 远程端的端口 InputBufferSize: 默认情况下,TCP/IP对象的InputBufferSize为512,这意味着它一次只能读取512字节,可以设置为更大的值。 OutputBufferSize: OutputBuf...
Qjson 存储qint64的问题
QJsonObject在insert qint64的值的时候比如1489844927912415488 这个值 在存储的时候就变成了 1.4898449279124155e+18 导致服务器无法解析,
Qt QtcpSocket 发送文件(包括数据块总大小)
客户端 mainwindow.h #ifndef MAINWINDOW_H #define MAINWINDOW_H #include #include #include #include #include #include #include #include #include namespace Ui { class MainWindow; } class MainWindow : p
多线程QTcpSocket 收数据到65532字节时停止
对QTcpSocket进行封装,想要实现,调用端异步读指定bytes数的数据,也就是调用端读100字节,当封装读到100字节时,给调用端一个signal. <em>问题</em>:随机出现读到65532字节的时候不再收
UDP连接下,如何调试Signal(ReadyRead())
connect(&udpSocket_recv, SIGNAL(readyRead()),this, SLOT(handleMsgresponse())); 用<em>readyread</em>作为信号。用如下函数接
if(tcpSocket->bytesAvailable()
写了两个小程序一个使用tcpserver作服务器端,一个使用tcpsocket作为客户端,然后模拟一个填写登录后得到返回值的过程,客户端连接后发送两条字符串到服务器端,这个没有<em>问题</em>,然后服务器端根据它
matlab串口禁用bytesavailablefcn
我在matlab上用串口读取stm32发送给电脑的数据,设置为缓冲区接收到32个字节就进入回调函数,但是弹出这个警告:The BytesAvailableFcn is being disabled. To enable the callback property either connect to the hardware with FOPEN or set the BytesAvailableFcn property.而且提示pause(5)这行代码有<em>问题</em>,不知道该怎么解决 ``` clear; clear s; clc; try s=serial('com5'); catch error('cant serial'); end set(s,'BaudRate',115200,'ByteOrder','littleEndian','DataBits',8, ... 'Parity','none','StopBits',1,'FlowControl','none'); set(s,'timeout',1); s.inputbuffersize=10240000; %设置串口接收缓冲区 s.OutputBufferSize=10240000; s.BytesAvailableFcnMode = 'byte'; s.BytesAvailableFcnCount = 32; s.BytesAvailableFcn = @callback1; fopen(s); pause(5); fclose(s); delete(s); clear s; close all; ```
CFNetwork解惑系列(一)是否要在kCFStreamEventHasBytesAvailable时读取所有数据
本次话题来自apple邮件列表《Must you read all you can on kCFStreamEventHasBytesAvailable?》 我们知道非block的CFStream一般有两种实现方式,一种是runloop,另一种是polling。在前者中,依靠注册的事件发生时,由runloop调度callback执行相应的工作。对于kCFStreamEventHasByt
Qt串口通信,QSerialPort的使用
前言 Qt写上位机时,串口通信是个常用功能,在Qt4的时候有第三方模块QextSerialPort,到了Qt5.1官方提供了QSerialPort模块。 目录 前言 获取串口信息:QSerialPortInfo 串口IO操作:QSerialPort 实例操作 补充:16进制文本(如“0A 13 EF”)转16进制数据(如0x0A 0x13 0xEF) 使用该模块需要在pro文件中添...
Qt readyRead()信号在QFile类里怎么用
想实现文本文件数据可用发出readyRead(),然后开始读取文件内容!readyRead()信号在QFile里怎么用呢,什么时候会发出这个信号?
QTcpSocket的readyRead()信号失灵的问题
本小白最近在用Qt写Tcp/ip的通信,程序在linux的虚拟机上跑得挺溜的,但出于其他需求换了win7平台后,Qt Creator一直无法通过编译(jom异常退出,原因暂时不明),所以用了vs201
求助各位大神:QDateTime时间转换的问题(Qt C++)
Qt 做数据采集的项目时,从仪器返回的数据,解析出当前时间如下: starttime = 201612061102264000 这是一个qint64类型的。 请教下,怎么将这个qint64类型的时间转
求助QT5.9使用QNetworkAccessManager实现FTP上传
本人在尝试使用QNetworkAccessManager来实现FTP上传文件时遇到的<em>问题</em>让我无从下手,希望看到的大佬给出解决方案,<em>问题</em>如下: 我在本机开启了一个FTP地址,然后用自己的机器进行测试上传,可以成功,但是使用别的机器进行上传就没有反应。。。不管是在局域网还是在外部网络,都没有反应。代码如下 ``` uploadLogFile::uploadLogFile(QWidget *parent) { compressErrorFile();//对文件进行zip打包 file = new QFile( zipPath ); file->open(QIODevice::ReadOnly); QByteArray byte_file = file->readAll(); QNetworkAccessManager *accessManager = new QNetworkAccessManager(this); accessManager->setNetworkAccessible(QNetworkAccessManager::Accessible); QUrl url("ftp://192.168.1.153/" + zipName); url.setScheme("ftp"); url.setPort(21); url.setUserName(name); url.setPassword(password); QNetworkRequest request(url); reply = accessManager->put(request, byte_file); progressBar = new QProgressBar(); progressBar->setVisible(true); connect(accessManager, SIGNAL(finished(QNetworkReply*)), this, SLOT(replyFinished(QNetworkReply*))); connect(reply, SIGNAL(error(QNetworkReply::NetworkError)), this, SLOT(loadError(QNetworkReply::NetworkError))); connect(reply, SIGNAL(uploadProgress(qint64 ,qint64)), this, SLOT(loadProgress(qint64 ,qint64))); _shouldStop = false; } ```主要代码就是这样的。无法应就是progressBar弹出来了,但是完全没有进度。希望看到的大佬可以解惑!!!!感谢感谢! 我是个穷逼没有C币。。。对不起
QNetworkAccessManager明显的内存泄漏
while(1){ QNetworkAccessManager *aa = new QNetworkAccessManager(); QNetworkReply *bb; QNetworkReque
QSocket编程 基于TCP的
<em>QSocket</em>编程,基于TCP/IP 一个Client例程 一个Server例程
Qt 中的那些“坑” (一)
本文记录自己在使用Qt过程中遇到的坑,有些是自己疏忽或认识不足导致的<em>问题</em>,有些是Qt自身的bug或陷阱。本文旨在总结自己遇到的<em>问题</em>和解决方法。 ------------------------------------------------------------本文将持续更新,如有帮助请收藏------------------------------------------- 1.关
QTcpSocket在收到disconnect数据丢失的问题
最近在使用Qt做一个GUI,用于结合MySQL进行pdf类型的生产工艺文件的存储,将路径和文件名放到Mysql中,将文件存在文件系统中, 本来想使用ftp来做的,后来想了想,麻烦,就自己做了一个C/S来实现。 主要实现3种操作就可以:     enum{         ZPacket_Upload_File=0x1101,// 上传文件         ZPacket_Download
QPixmap::loadFromData载入图片总是不成功
bool CPictureEx::LoadFile(char *pFileName) { if(pFileName == NULL) return FALSE; //pFileName是所要打开的图片
QT QNetworkAccessManager问题
想做一个ftp客户端,网上借鉴的代码,在下载文件(get)之后在finished的槽函数中readall得到的是空字符串, reply->error()得到的返回值为QNetworkReply::ContentAccessDenied,请问一下该怎么解决。 链接的服务器已经开启的ftp服务,用ftp工具(flashxp)可以连上,用户名和密码都是空,我就在QUrl中设置的用户名密码都是空字符串,
TcpSocket对象发送数据后,没有触发bytesWritten信号
connect(m_pClient, SIGNAL(bytesWritten(qint64)), this, SLOT(updateProgress(qint64)));//这里连接信号和槽 void SendFileDialog::readMessage() { QDataStream in(m_pClient); in.setVersion(QDataStream::Qt_5_7); quint8 isRecive; in >> isRecive; if (isRecive == 1) { QByteArray block; ............................... m_bytesToWrite = m_allBytes - m_pClient->write(block); //这里发送数据后,正常地进入了updateProgress这个槽 } else { ............................................... } } void SendFileDialog::updateProgress(qint64 byteNum) { ............................................. qApp->processEvents(); m_bytesWritten += byteNum; QByteArray block; QDataStream out(&block, QIODevice::WriteOnly); out.setVersion(QDataStream::Qt_5_7); if (m_bytesToWrite > 0) { out << m_file->read(qMin(m_bytesToWrite, payloadSize)); m_bytesToWrite -= (int)m_pClient->write(block); //但这里发送数据后,没有再进入updateProgress这个槽 block.resize(0); } else { m_file->close(); } ......................................... } 这段代码是从书上搬下来的,以前都没<em>问题</em>,这次不知道怎么回事,求大佬救命啊! 还有,环境是vs2015+Qt5.7.1(但应该与这个无关吧)
QT中的随机函数的用法
首先是初始化: qsrand(QTime(0,0,0).secsTo(QTime::currentTime())); 接着就可以随机了: qrand()理论上返回0 到 RAND_MAX间的值。 如果要返回0~n间的值,则为:qrand()%n; 如果要返回a~b间的值,则为:a + qrand() % (b - a) 这里介绍2种方法 头文件都必须的,不
QT 的随机函数的应用
QT中的随机函数的用法 首先是初始化: qsrand(QTime(0,0,0).secsTo(QTime::currentTime())); 接着就可以随机了: qrand()理论上返回0 到RAND_MAX间的值。 如果要返回0~n间的值,则为:qrand()%n; 如果要返回a~b间的值,则为:a + qrand() % (b - a) 这里介绍2...
在应用中播放服务器的音频
怎么样从我的应用中播放服务器的音频文件?我只能实现播放MP3或者是从SD卡中或文件夹,请帮忙,谢谢 Main.java TextView ic=(TextView)findViewById(R.id.sonraki); ic.setOnClickListener(new OnClickListener(){ public void onClick(View v){ Intent i=new Intent(tasavvuf.this,ney.class); startActivity(i); Button play=(Button)findViewById(R.id.cal); Button stop=(Button)findViewById(R.id.dur); play.setOnClickListener(new OnClickListener(){ @Override public void onClick(View v){ } }); stop.setOnClickListener(new OnClickListener(){ @Override public void onClick(View v){ mp=MediaPlayer.create(tasavvuf.this,R.raw.tasavvuf); mp.start(); } });
qt QFtp 上传文件不成功
诸位老师,遇到一个<em>问题</em>,困惑不已。折磨2天了。 我做的工作。通过QFtp把本地文件上传到ftp服务器(file zilla)。 代码片段如下: #include "mainwindow.h" #inc
QSocketNotifier: Socket notifiers cannot be enabled or disabled from another thread
跨线程使用socket的<em>问题</em>
qtcpsocket作为客户端时怎么绑定指定端口
使用qtcpsocket创建TCP客户端,怎么指定客户端的端口?
QTcpSocket readyread() 信号无法触发
主线程创建一个子线程check用来周期发起tcp连接,为了可以同时与多台主机通信,在此子线程check中又同时创建多个子线程。 在每个子线程中实例化一个对象qtcp,在此对象qtcp中创建QTcpSo
QTcpSocket和QSocketNotifier
QTcpSocket和<em>QSocket</em>Notifier配合使用出现<em>问题</em>,表现为能接收到<em>QSocket</em>Notifier::activated(int)信号,但是从QTcpSocket中读数据时始终返回0。
qt产生5位随机数问题
求问如何使用qsrand和qrand产生一个5位随机数??
TCp没有bytesWritten(qint64)信号怎么办啊?
先发送文件头结构和实际文件大小,然后没有bytesWritten(qint64)信号,应该怎么办啊? 发送代码如下: ```void Widget::startTransfer() { localFile = new QFile(fileName); if (!localFile->open(QFile::ReadOnly)) { qDebug() << "client: open file error!"; return; } // 获取文件大小 totalBytes = localFile->size(); QDataStream sendOut(&outBlock, QIODevice::WriteOnly); sendOut.setVersion(QDataStream::Qt_4_0); QString currentFileName = fileName.right(fileName.size() - fileName.lastIndexOf('/')-1); // 保留总大小信息空间、文件名大小信息空间,然后输入文件名 sendOut << qint64(0) << qint64(0) << currentFileName; // 这里的总大小是总大小信息、文件名大小信息、文件名和实际文件大小的总和 totalBytes += outBlock.size(); sendOut.device()->seek(0); // 返回outBolock的开始,用实际的大小信息代替两个qint64(0)空间 sendOut << totalBytes << qint64((outBlock.size() - sizeof(qint64)*2)); // 发送完文件头结构后剩余数据的大小 bytesToWrite = totalBytes - tcpServerConnection->write(outBlock); ui->severStatusLabel->setText(tr("已连接")); outBlock.resize(0); } ```
QT中没有byte
QT里没有没有byte数据类型的 自己定义:#define byte unsigned char 转载于:https://www.cnblogs.com/judes/p/6768960.html
Qt QPainter 使用drawLines绘制有问题
使用drawLines绘制的时候会出现下面这种情况 ![图片说明](https://img-ask.csdn.net/upload/201705/23/1495506706_337115.png) 现在想弄成这样 ![图片说明](https://img-ask.csdn.net/upload/201705/23/1495506754_241713.png) 下面的不是使用drawLines绘制的 是使用drawPath绘制的 但是使用drawPath绘制的话在开启抗锯齿的时候效率很低 哪位大牛能提出个好建议 谢谢啦 这是我的绘制代码 QPen pen; pen.setStyle(Qt::SolidLine); pen.setWidth(m_nLineWidth); pen.setJoinStyle(Qt::RoundJoin); pen.setCapStyle(Qt::RoundCap); QColor color(m_colorLeft); color.setAlpha(m_alpha); //p.setOpacity(0.5); pen.setColor(color); p.setPen(pen); p.setBrush(QBrush(Qt::NoBrush)); if(open){ p.setRenderHint(QPainter::Antialiasing,true); } QPoint tmp=m_arrPoints.first(); QVector m_line; foreach (QPoint point, m_arrPoints) { QLine line(tmp,point); m_line.push_back(line); tmp = point; } p.drawLines(m_line);
Qt中QJson的具体用法
谁能告诉我Qt中QJson的具体用法,越详细越好。
QIODevice+QAudioInput+QAudioOutput播放实时音频
初学QT编程,了解不是很深,现在做了这样一个功能,遇到了些麻烦,还希望大家能伸出援手,谢谢! 线程1使用QIODevice+QAudioInput获取当前录音,音频输入Device为WriteOnly
求大神给解释下下面这个C++函数?
void Server::sndMsg() { ui->sSendBtn->setEnabled(false); clntConn = tSrv->nextPendingConnection(); connect(clntConn,SIGNAL(bytesWritten(qint64)),this,SLOT(updClntProgress(qint64))); ui->sStatusLbl->setText(tr("开始传送文件 %1 !").arg(theFileName)); locFile = new QFile(fileName); if(!locFile->open((QFile::ReadOnly))) //以只读方式打开文件 { QMessageBox::warning(this, tr("应用程序"), tr("无法读取文件 %1:\n%2").arg(fileName).arg(locFile->errorString())); return; } totalBytes = locFile->size(); //获取带发送文件的大小并存储 QDataStream sendOut(&outBlock, QIODevice::WriteOnly); //将发送缓冲区封装在一个QDataStream类型的变量中 sendOut.setVersion(QDataStream::Qt_4_7); time.start(); // 开始计时 QString curFile = fileName.right(fileName.size() - fileName.lastIndexOf('/')-1); sendOut << qint64(0) << qint64(0) << curFile; //填写实际的总长度和文件长度 totalBytes += outBlock.size(); sendOut.device()->seek(0); //将读写操作指向从头开始 sendOut << totalBytes << qint64((outBlock.size() - sizeof(qint64)*2)); bytesTobeWrite = totalBytes - clntConn->write(outBlock); outBlock.resize(0); //清空发送缓冲区以备下次使用 } 这个函数一个QT开发平台上P2P文件传输系统的核心部分,函数的作用是传输文件。但是,小弟不明白最后的这几句代码的意思: sendOut << qint64(0) << qint64(0) << curFile; totalBytes += outBlock.size(); sendOut.device()->seek(0); //将读写操作指向从头开始 sendOut << totalBytes << qint64((outBlock.size() - sizeof(qint64)*2)); 为什么开始的话要讲两个qing64(0)读入sendOut数据流,而后来输出的时候又先输出totalBytes,后再输出outBlock.size()-sizeof((qint64)×2) 求大神指点,如果没行都能注释的话,我再加10个C币
QSocketNotifier: Invalid socket 20 and type 'Read', disabling...
求助:在arm上使用qt和jrtplib时发送rtp 过一会就出现<em>QSocket</em>Notifier: Invalid socket 20 and type 'Read', disabling...错误,
开源库QSocketIO编译出错?:Missing CMake tests.Project ERROR: Unknown module(s
Project ERROR: Unknown module(s) in QT: socketio Project ERROR: Unknown module(s) in QT: socketio Pr
QT socket接收端每一次接收缓冲区数据的延时问题
我想实现局域网视频传输功能,客户端通过调用摄像头将每一帧画面传送到服务器端,服务器端将获致的画面显示出来,客户端是在Linux系统上,服务器端是在Windows系统上。在客户端中我的<em>QSocket</em>类对象调用write()发送数据流,服务器端<em>readyread</em>()信号关联的槽函数中用readAll()来读取缓冲区中的数据流,但是在读取数据的时候,我发现每一次读取数据后会有几毫秒的延时才会继续读取后来的数据,并且缓冲区每次也只有3472个字节的数据可读取,我的每帧画面大概有300多K,所以正因为这种延时我在客户端发送每帧画面的频率不能过快,大概只能一秒一帧才会正常显示画面。这个<em>问题</em>困扰我很长时间了,我应该怎样处理这种<em>问题</em>??????? 补充,从windows上发送数据给Linux不会有上述<em>问题</em>,视频很流畅。
while循环,出现QSocketNotifier: Can only be used with threads started with QThread
写了个图像处理+写串口的qmake工程,编译没有错误,但是一运行到while(true),就会出现'<em>QSocket</em>Notifier: Can only be used with threads sta
求教:用QSocketNotifier和信号槽接收串口数据,不能触发信号
串口只能发数据,不能接收数据,请大神指点 主函数: #include using namespace std; int main(int argc, char*arg
int16, int32, int64等类型说明
Int16 意思是16位整数(16bit integer),相当于short 占2个字节 -32768 ~ 32767 Int32 意思是32位整数(32bit integer), 相当于 int 占4个字节 -2147483648 ~ 2147483647 Int64 意思是64位整数(64bit interger), 相当于long long 占8个字节 ...
Qt在多线程中使用QTcpSocket碰见的问题
在Qt中写多线程网络通信时碰到了个<em>问题</em>,具体情形如下: 新建一个FileRecvThread继承QThread,重写run函数 class FileRecvThread : public QThrea
求助qt大佬 QT for Android 构建运行不成功的解决办法?
所在开发环境如下图:QT5.12.3 ![图片说明](https://img-ask.csdn.net/upload/201905/05/1557049172_443192.png)![图片说明](https://img-ask.csdn.net/upload/201905/05/1557049180_539928.png) 构建运行出现报错如下 Error while building/deploying project test (kit: Android for armeabi-v7a (Clang Qt 5.12.3 for Android ARMv7)) When executing step "Build Android APK" 整体构建失败的图片如下 ![图片说明](https://img-ask.csdn.net/upload/201905/05/1557048672_748422.png)
Qtcpsocket客户端和winsocket服务端QIODevice::write (QTcpSocket): device not open
void TcpConnect::sendMessage() { //试发头部信息 VideoHead video_head; video_head.set_type(1); video_head.s
QSocketNotifier:Invalid socket 11 and type 'Read',disabling...
高分求各位大侠支招:用QT写的365天无人值守程序,运行4天3夜后,出现如下错误: <em>QSocket</em>Notifier:Invalid socket 11 and type 'Read',disablin
Qt QNetworkAccessManager下载时获取文件大小总是 0求助??
我利用下面函数获取文件大小总是0,可以正常下载就是文件总大小时候一直是0 qint64 getFileTotalSize(QString url, int tryTimes) { qint64 siz
available()
如果由于某种原因用户不希望读取数据,除非用户想要的全部数据可以立即得到,这时候就可以用available()方法返回的字节数是能够读取的最小字节数,而在实际上可以读取更多的字节,但是能够读取的字节数据至少与available()返回的字节数一样多。 看例子 [b]int <em>bytesAvailable</em>=in.available(); byte[] input=new byte[by...
Qt 如何清除在窗口上已画的图形
首先我将主窗口设置为透明: ``` MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); setWindowOpacity(1); setWindowFlags(Qt::FramelessWindowHint); setAttribute(Qt::WA_TranslucentBackground); .... ``` 然后我希望在主窗口上画各种图形(直线,圆等),检测鼠标左键按下,记录第一个点位置,然后鼠标移动时可以从第一个点的位置画一条到当前位置的直线,大致代码如下: ``` void MainWindow::mousePressEvent(QMouseEvent *e) { if (e->button() == Qt::LeftButton) { firstPnt = e->pos(); } } void MainWindow::mouseMoveEvent(QMouseEvent *e) { QPoint pnt = e->pos(); curPnt.setX(e->x()); curPnt.setY(e->y()); this->repaint(0, 0, 1920, 1080); } ``` 我的主窗口是1920*1080,调用repaint后会执行paintEvent: ``` void MainWindow::paintEvent(QPaintEvent *e) { QPainter painter(this); painter.setRenderHint(QPainter::Antialiasing, true); painter.setPen(QPen(Qt::black, 4, Qt::SolidLine, Qt::RoundCap)); painter.drawLine(firstPnt.x(), firstPnt.y(), curPnt.x(), curPnt.y()); } ``` 但是repaint并没有把原先的图形清除掉,而且鼠标移动画图过程非常卡顿,有什么好的方法么,我才接触QT不到一星期,大佬帮帮忙。
在qt5中等待槽函数执行后再继续执行本函数
在qt5中定义一个a函数,在a函数中通过信号绑定一个槽函数。 connect(reply,SIGNAL(downloadProgress(qint64,qint64)),this,SLOT(downloadProgress(qint64,qint64))); 此槽函数是从ftp上下载视频文件。我想等待槽函数执行完毕后,外面的a函数体在继续执行。该如何做,给个思路或者代码。谢谢
Qt 文件逐字节的读取与写入的补充
一般来说 如果我们采用readAll一次性读取所有字节,如果是小文件都还没<em>问题</em>,如果是大文件几十MB几百MB很有可能还卡死,或者几个GB,直接内存都不够了~。 我们需要 读取一个字节发送一个字节~~不用占用太多内存~ #include "mainwindow.h" #include "ui_mainwindow.h" #include #include #include #include Ma
qt5QNetworkAccessManager 如何获取ftp文件目录列表
QFTP试过了 遇到中文目录就不行了 所以 只能用QNetworkAccessManager
QT https 通信 返回值QNetworkReply问题
pManager = new QNetworkAccessManager(this); QNetworkRequest req; QSslConfiguration config; QByteArray content = "username=root@cve&password=111111"; int contentLength = content.length(); config.setPeerVerifyMode(QSslSocket::VerifyNone); config.setProtocol(QSsl::TlsV1SslV3); req.setSslConfiguration(config); req.setUrl(QUrl("https://192.168.7.11:8006/api2/json/access/ticket")); req.setHeader(QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded"); req.setHeader(QNetworkRequest::ContentLengthHeader,contentLength); QNetworkReply *pReply = pManager->post(req, content); QByteArray encodedString = pReply->readAll(); qDebug()<<<<endl; 为什么post返回值pReply是空的,错在什么地方?
qt creator error: QJsonObject: No such file or directory
qt creator error: QJsonObject: No such file or directory 这个要怎么添加QJsonObject库,是这个错误。
Qt使用多线程刷新界面,界面一段时间后不响应
我设计了一个串口工作线程和界面刷新主线程。 串口线程如下: #include "thread.h" #include "mainwindow.h" #include #include Thread::Thread() { //初始化 } Thread::~Thread() { mutex.lock(); abort = true; mutex.unlock(); wait(); }//析构 void Thread::run() //这就是线程的具体工作了 { // qint64 f=0; int i; int fd; int nread=1; //int nwrite int count=0;//size of writed buff fd=open("/dev/ttySAC1",O_RDONLY | O_NOCTTY); set_speed(fd,115200); if(set_Parity(fd,8,1,'N')==FALSEE) { printf("Set Parity Error\n"); exit (0); } while(!abort) { qDebug()<<< #include #include void MyMainWindow::paintEvent(QPaintEvent *) //paintEvent函数由系统自动调用,用不着我们人为的去调用。 { QPainter paint;//1024*768 paint.begin(this); /*画一大堆东西*/ qDebug()<<<QThread::currentThreadId(); DoSth……; update(); } void MyMainWindow::timerFunction() { cttimerDoSth; } void MyMainWindow::timerFunctionPon() { PonttimerDoSth; } 运行了一段时间(一般是几个小时后)界面卡住不动了,定时器计时都不显示了,这是怎么回事啊?
Qt5.7 QSerialPort串口使用时readyRead()信号不产生解决方法
最近在使用QSerialPort时发现一个<em>问题</em>。使用事件的方式readyRead()信号始终不能产生,也就进入不到槽函数里。 但是我发现,每次使用ArduinoIDE的串口连接后,再次使用自己的串口就可以产生readyRead()信号。初步判断要么是打 开方式不对,要么就是打开后少了什么。于是各种查,无奈网上资料不多,全是qsocket的。不过还是被我翻到了一个博客, 不过这个博客没有讲这个
相见恨晚的超实用网站
相见恨晚的超实用网站 持续更新中。。。
Java学习的正确打开方式
在博主认为,对于入门级学习java的最佳学习方法莫过于视频+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现学习的最好方式就是阅读参考官方文档其次就是国内的书籍,博客次之,这又是一个层次了,这里暂时不提后面再谈。博主将为各位入门java保驾护航,各位只管冲鸭!!!上天是公平的,只要不辜负时间,时间自然不会辜负你。 何谓学习?博主所理解的学习,它是一个过程,是一个不断累积、不断沉淀、不断总结、善于传达自己的个人见解以及乐于分享的过程。
nios ii做的时钟,基于atler ep2c8的板子,包括flash,sdram的使用下载
nios ii做的时钟,基于atler ep2c8的板子,包括flash,sdram的使用 做sopc系统的简单入门程序,注释也有些,献丑了 相关下载链接:[url=//download.csdn.net/download/liangyuliyu00/2598214?utm_source=bbsseo]//download.csdn.net/download/liangyuliyu00/2598214?utm_source=bbsseo[/url]
Oracle ADF Survival Guide 无水印pdf下载
Oracle ADF Survival Guide 英文无水印pdf pdf所有页面使用FoxitReader和PDF-XChangeViewer测试都可以打开 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自网络,如有侵权,请联系上传者或csdn删除 相关下载链接:[url=//download.csdn.net/download/u011433684/10001620?utm_source=bbsseo]//download.csdn.net/download/u011433684/10001620?utm_source=bbsseo[/url]
Striving for simplicity下载
人工智能机器学习方面,降维方面的论文,2015年在ICIR上的文章 相关下载链接:[url=//download.csdn.net/download/future0828/10656240?utm_source=bbsseo]//download.csdn.net/download/future0828/10656240?utm_source=bbsseo[/url]
相关热词 c# 引用mysql c#动态加载非托管dll c# 两个表数据同步 c# 返回浮点json c# imap 链接状态 c# 漂亮字 c# 上取整 除法 c#substring c#中延时关闭 c#线段拖拉
我们是很有底线的