QTcpSocket 发送和接收数据的几种方法
1、QTcpSocket 继承于QAbstractSocket继承于QIODevice
2、QTcpSocket 提供的几种接收和发送数据方法
- write ( const char *, qint64 ) : qint64
- write ( const char * ) : qint64
- write ( const QByteArray & ) : qint64
- writeData ( const char *, qint64 ) : qint64
- read ( char * data, qint64 maxSize ): qint64
- read ( qint64 maxSize ):QByteArray
- readAll ():QByteArray
- readLine ( char * data, qint64 maxSize ):qint64
- readLine ( qint64 maxSize = 0 ):QByteArray
3、例子1 write ( const QByteArray & ) : qint64
Cpp代码 ![]()
- //用于暂存要发送的数据
- QByteArray block;
- //使用数据流写入数据
- QDataStream out(&block,QIODevice::ReadWrite);
- //设置数据流的版本,客户端和服务器端使用的版本要相同
- out.setVersion(QDataStream::Qt_4_6);
- //设置发送长度初始值为0
- out << (quint16) 0;
- //设置发送内容
- out<<hash;
- //回到字节流起始位置
- out.device()->seek(0);
- //重置字节流长度
- out << (quint16) (block.size()-sizeof(quint16));
- //往套接字缓存中写入数据,并发送
- tcpSocket->write(block);
3、例子2 write ( const char *, qint64 ) : qint64
Cpp代码 ![]()
- QString *a=new QString;
- tcpSocket->write(a,a->length());
4、例子3 数据流直接使用QIODevice
Cpp代码 ![]()
- QDataStream in(tcpSocket);
- in<< quint16(0xFFFF); //此时QIODevice加载了此数据,而且直接发送出去
- quint16 length = 0;
- QDataStream out(tcpSocket);//如果此时tcpSocket直接有数据发送过来
- out >> length;//length获得第一个整型值,并在tcpSocket中清空该数据
转自:http://www.lofter.com/tag/qtcpsocket
QTcpSocket 发送和接收数据的几种方法的更多相关文章
- python网络编程调用recv函数完整接收数据的三种方法
最近在使用python进行网络编程开发一个通用的tcpclient测试小工具.在使用socket进行网络编程中,如何判定对端发送一条报文是否接收完成,是进行socket网络开发必须要考虑的一个问题.这 ...
- [Socket网络编程]由于套接字没有连接并且(当使用一个 sendto 调用发送数据报套接字时)没有提供地址,发送或接收数据的请求没有被接受。
原文地址:http://blog.sina.com.cn/s/blog_70bf579801017ylu.html,记录在此方便查看 解决办法: MSDN的说明: Close 方法可关闭远程主机连接, ...
- Netty——高级发送和接收数据handler处理器
netty发送和接收数据handler处理器 主要是继承 SimpleChannelInboundHandler 和 ChannelInboundHandlerAdapter 一般用netty来发送和 ...
- netty发送和接收数据handler处理器
netty发送和接收数据handler处理器 主要是继承 SimpleChannelInboundHandler 和 ChannelInboundHandlerAdapter 一般用netty来发送和 ...
- 手把手教你Android手机与BLE终端通信--连接,发送和接收数据
假设你还没有看上一篇 手把手教你Android手机与BLE终端通信--搜索,你就先看看吧,由于这一篇要接着讲搜索到蓝牙后的连接.和连接后的发送和接收数据. 评论里有非常多人问假设一条信息特别长,怎么不 ...
- udp网络程序-发送、接收数据
1. udp网络程序-发送数据 创建一个基于udp的网络程序流程很简单,具体步骤如下: 创建客户端套接字 发送/接收数据 关闭套接字 代码如下: #coding=utf-8from socket im ...
- socket 错误之:OSError: [WinError 10057] 由于套接字没有连接并且(当使用一个 sendto 调用发送数据报套接字时)没有提供地址,发送或接收数据的请求没有被接受。
出错的代码 #server端 import socket import struct sk=socket.socket() sk.bind(('127.0.0.1',8080)) sk.listen( ...
- HttpServletRequest接收参数的几种方法
HttpServletRequest接收参数的几种方法 我们经常用servlet和jsp, 经常用request.getParameter() 来得到数据. request.getParameter( ...
- PHP获取POST数据的几种方法汇总
一.PHP获取POST数据的几种方法 方法1.最常见的方法是:$_POST['fieldname']; 说明:只能接收Content-Type: application/x-www-form-urle ...
随机推荐
- [LintCode] Subarray Sum & Subarray Sum II
Subarray Sum Given an integer array, find a subarray where the sum of numbers is zero. Your code sho ...
- jsp 嵌入页面
<section id="main-content"> <section class="wrapper"> <jsp:includ ...
- javascript读取xml文件读取节点数据的例子
分享下用javascript读取xml文件读取节点数据方法. 读取的节点数据,还有一种情况是读取节点属性数据. <head> <title></title> < ...
- 把虚拟教练带回家,「EuMotus」想用AI实现高精度运动反馈系统
https://36kr.com/p/5089139.html 无需穿戴设备,只需一个红外摄像头和+已安装好EuMotus专利软件的手提电脑 由政府主导的高达2200亿美金的健身与运动支出,15%的健 ...
- 每日英语:Welcome to the Global Middle-Class Surge
The mass uprisings this summer in Egypt, Turkey and Brazil are powerful reminders that the middle cl ...
- [iOS]终极横竖屏切换解决方案
[iOS]终极横竖屏切换解决方案 大家的项目都是只支持竖屏的吧?大多数朋友(这其中当然也包括博主),都没有做过横屏开发,这次项目刚好有这个需求,因此把横竖屏相关的心得写成一遍文章供诸位参考. 01.综 ...
- Linux内核分析:recv、recvfrom、recvmsg函数实现
先看一下这三个函数的声明: #include <sys/types.h> #include <sys/socket.h> ssize_t recv(int sockfd, vo ...
- 【Python】解决UnicodeEncodeError: 'ascii' codec can't encode character u'\u2019' in position 0: ordinal not in range(128)
指定文件字符集为utf-8 在文件头部加入以下代码: import sys reload(sys) sys.setdefaultencoding('utf-8')
- eclipse jetty 请求的操作无法在使用用户映射区域打开的文件上执行
使用jetty debug代码启动 在eclipse中进行运行调试,碰到无法编辑保存webapp下的文件 提示: 请求的操作无法在使用用户映射区域打开的文件上执行 解决方法: 从 jetty 7 ...
- Python中斐波那契数列的四种写法
在这些时候,我可以附和着笑,项目经理是决不责备的.而且项目经理见了孔乙己,也每每这样问他,引人发笑.孔乙己自己知道不能和他们谈天,便只好向新人说话.有一回对我说道,“你学过数据结构吗?”我略略点一点头 ...