QTcpSocket read write buffer
来源:互联网 发布:境外网络加速器免费 编辑:程序博客网 时间:2024/05/19 04:06
QTcpSocket read write buffer
write时,系统不保证一次发送完毕,所以应当循环write
假设发送一个QByteArray arr;
int size=socket.write(arr);
while(size < arr.size() )
{
size += socket.write( arr.right(arr.size() - size ) );
}
读的时候,直接用socket读,可以用QDataStream读,只是用QDataStream的话,一定要确定当前可读的字节数满足你读的需要
可以参考Qt自带的例子中中,ForntueClient;
1 先判断可读的字节数够不够sizeof(qint32)或者sizeof(qint16), 按照你的协议
2 够的话,就读这个为size,不够的话,返回,等待下次readyRead触发你的slot;或者调用waitForReadReady进行阻塞式的等待
3 判断bytesAvailable够不够size,够则读; 不够则“返回,等待下次readyRead触发你的slot;或者调用waitForReadReady进行阻塞式的等待”
上述返回后,依然保留着size在类中,所以,有个类的设计问题。
见到一个新的写发,本质上一样的,似乎有点新意
- while( true )
- {
- switch( state )
- {
- case WaitSize:
- if( stream.bytesAvailable() < sizeof( dataSize ) ) return;
- sretam >> dataSize;
- state = WaitData;
- break;
- case WaitData:
- if( stream.bytesAvailable() < dataSize ) return;
- // read the data
- state = WaitSize;
- break;
- }
- }
- QTcpSocket read write buffer
- QTcpSocket read write buffer
- 关于qtcpsocket连续读写,qthread continue write read
- qtcpsocket调用write和read函数写数据乱码问题解决方法
- Read read read, write write write!
- read/write
- read/write
- Read && Write
- log buffer —— log file sequential read、log file single write
- 回顾BufferedInputStream-int read(byte[] buffer)BufferedOutputStream-void write(byte[] buff ,int offset
- bug解决-内核C库写保护(FORTIFY: write: prevented read past end of buffer)
- cache和write buffer
- s3c2410 CACHES, WRITE BUFFER
- s3c2410 CACHES, WRITE BUFFER
- s3c2410 CACHES, WRITE BUFFER
- Write buffer的作用
- ubifs write buffer
- DirectFB write surface buffer
- 根据当前时间计算年龄的函数
- struts2标签详解
- 20081207-醉酒
- QTimer,QTime的一点应用
- vc的一个调试技巧
- QTcpSocket read write buffer
- Ubuntu下RMVB等常用视频文件完美播放
- 深入浅出MFC笔记1
- IPv6 基本技术原理和特点
- Java虚拟机垃圾收集
- JAVA调用Oracle存储过程
- 怀旧-很久以前的比赛总结
- Java 冒泡排序的例子
- 一些经验和体会