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代码  

  1. //用于暂存要发送的数据
  2. QByteArray block;
  3. //使用数据流写入数据
  4. QDataStream out(&block,QIODevice::ReadWrite);
  5. //设置数据流的版本,客户端和服务器端使用的版本要相同
  6. out.setVersion(QDataStream::Qt_4_6);
  7. //设置发送长度初始值为0
  8. out << (quint16) 0;
  9. //设置发送内容
  10. out<<hash;
  11. //回到字节流起始位置
  12. out.device()->seek(0);
  13. //重置字节流长度
  14. out << (quint16) (block.size()-sizeof(quint16));
  15. //往套接字缓存中写入数据,并发送
  16. tcpSocket->write(block);

3、例子2  write ( const char *, qint64 ) : qint64

Cpp代码  

  1. QString *a=new QString;
  2. tcpSocket->write(a,a->length());

4、例子3  数据流直接使用QIODevice

Cpp代码  

  1. QDataStream in(tcpSocket);
  2. in<< quint16(0xFFFF); //此时QIODevice加载了此数据,而且直接发送出去
  3. quint16 length = 0;
  4. QDataStream out(tcpSocket);//如果此时tcpSocket直接有数据发送过来
  5. out >> length;//length获得第一个整型值,并在tcpSocket中清空该数据

转自:http://www.lofter.com/tag/qtcpsocket

QTcpSocket 发送和接收数据的几种方法的更多相关文章

  1. python网络编程调用recv函数完整接收数据的三种方法

    最近在使用python进行网络编程开发一个通用的tcpclient测试小工具.在使用socket进行网络编程中,如何判定对端发送一条报文是否接收完成,是进行socket网络开发必须要考虑的一个问题.这 ...

  2. [Socket网络编程]由于套接字没有连接并且(当使用一个 sendto 调用发送数据报套接字时)没有提供地址,发送或接收数据的请求没有被接受。

    原文地址:http://blog.sina.com.cn/s/blog_70bf579801017ylu.html,记录在此方便查看 解决办法: MSDN的说明: Close 方法可关闭远程主机连接, ...

  3. Netty——高级发送和接收数据handler处理器

    netty发送和接收数据handler处理器 主要是继承 SimpleChannelInboundHandler 和 ChannelInboundHandlerAdapter 一般用netty来发送和 ...

  4. netty发送和接收数据handler处理器

    netty发送和接收数据handler处理器 主要是继承 SimpleChannelInboundHandler 和 ChannelInboundHandlerAdapter 一般用netty来发送和 ...

  5. 手把手教你Android手机与BLE终端通信--连接,发送和接收数据

    假设你还没有看上一篇 手把手教你Android手机与BLE终端通信--搜索,你就先看看吧,由于这一篇要接着讲搜索到蓝牙后的连接.和连接后的发送和接收数据. 评论里有非常多人问假设一条信息特别长,怎么不 ...

  6. udp网络程序-发送、接收数据

    1. udp网络程序-发送数据 创建一个基于udp的网络程序流程很简单,具体步骤如下: 创建客户端套接字 发送/接收数据 关闭套接字 代码如下: #coding=utf-8from socket im ...

  7. socket 错误之:OSError: [WinError 10057] 由于套接字没有连接并且(当使用一个 sendto 调用发送数据报套接字时)没有提供地址,发送或接收数据的请求没有被接受。

    出错的代码 #server端 import socket import struct sk=socket.socket() sk.bind(('127.0.0.1',8080)) sk.listen( ...

  8. HttpServletRequest接收参数的几种方法

    HttpServletRequest接收参数的几种方法 我们经常用servlet和jsp, 经常用request.getParameter() 来得到数据. request.getParameter( ...

  9. PHP获取POST数据的几种方法汇总

    一.PHP获取POST数据的几种方法 方法1.最常见的方法是:$_POST['fieldname']; 说明:只能接收Content-Type: application/x-www-form-urle ...

随机推荐

  1. c++中浮点数精度设置

    1.包含头文件<iomanip>,附注manip是manipulator,操控的简写. 2.第一种写法: cout<<setiosflags(ios::); 第二种写法: co ...

  2. 一种3D空间的柱状多边形检测实现

    最近无意中拓展出这个东西,基于之前写的2D多边形检测: http://www.cnblogs.com/hont/p/6105997.html 而判断两条线相交的方法替换成了我后来写的差乘判断: htt ...

  3. linq筛选唯一

    var sizelist= (from p in stockList select p.Size).Distinct().ToArray(); newslist = newslist.OrderBy( ...

  4. html5自定义数字键盘

    原理:使用div模拟输入框,避免手机原生键盘弹出,键盘使用div模拟,点击事件使用js控制,光标闪烁使用css模拟,具体代码如下: <!doctype html> <html lan ...

  5. Webservice超时问题

    Winform客户端调用Webservice 120秒超时.对此问题,针对服务器与客户端分别作了超时设置为300S. 1. 服务器端设置超时 在 web.config 的 system.web 里添加 ...

  6. 菜鸟学Java(十一)——GET与POST

    相信大家在面试的时候经常会被问到:GET与POST有什么区别吧?你是怎么回答的呢?POST比GEt安全?GET有URL的长度限制而POST没有或者很大?GET通过URL或者Cookie传参数,POST ...

  7. PLSA及EM算法

    前言:本文主要介绍PLSA及EM算法,首先给出LSA(隐性语义分析)的早期方法SVD,然后引入基于概率的PLSA模型,其参数学习采用EM算法.接着我们分析如何运用EM算法估计一个简单的mixture ...

  8. 【转】Unity3D的LightProbe动态光探头用法介绍

    原创至上,移步请戳:Unity3D的LightProbe动态光探头用法介绍 之前曾经介绍过Unity3D的LightMapping烘焙的用法.单独使用的LightMapping效果很好,但由于只是把光 ...

  9. ubuntu 中DNAT SNAT配置实验.

    1.      目的 图1 如图1所示,有A,B两台计算机,其中A配置成普通PC,B是网关.实现由A向一个不存在的IP 发起tcp连接,并能向这个不存在的ip发送数据. 同时响应这个tcp连接的是B中 ...

  10. Java的数组和list升序,降序,逆序函数Collections.sort和Arrays.sort的使用

    list升序,降序,逆序List<Integer>list =new ArrayList<Integer>();//如果list是 5 7 2 6 8 1 41.升序:Coll ...