• 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代码  收藏代码

    1. //用于暂存要发送的数据  
    2. QByteArray block;  
    3. //使用数据流写入数据  
    4. QDataStream out(&block,QIODevice::ReadWrite);  
    5. //设置数据流的版本,客户端和服务器端使用的版本要相同  
    6. out.setVersion(QDataStream::Qt_4_6);  
    7.   
    8. //设置发送长度初始值为0  
    9. out << (quint16) 0;  
    10. //设置发送内容  
    11. out<<hash;  
    12.   
    13. //回到字节流起始位置  
    14. out.device()->seek(0);  
    15. //重置字节流长度  
    16. out << (quint16) (block.size()-sizeof(quint16));  
    17.   
    18. //往套接字缓存中写入数据,并发送  
    19. 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.   
    4. quint16 length = 0;  
    5. QDataStream out(tcpSocket);//如果此时tcpSocket直接有数据发送过来  
    6. out >> length;//length获得第一个整型值,并在tcpSocket中清空该数据  

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

  • 相关阅读:
    String 中的秘密
    delphi中一切皆指针
    Servlet容器模型(四)ServletConfig、ServletContext
    用DELPHI的RTTI实现对象的XML持久化
    通过崩溃地址找错误行数之Delphi版
    delphi json(CDS包含了Delta数据包)
    Delphi中JSon SuperObject 使用:数据集与JSON对象互转
    用Delphi实现Windows的鼠标钩子函数
    HDU--1213--How Many Tables--并查集
    用DELPHI的RTTI实现数据集的简单对象化
  • 原文地址:https://www.cnblogs.com/liushui-sky/p/6530442.html
Copyright © 2020-2023  润新知