分享

QTcpSocket 发送和接收数据的几种方法

 百草园404 2016-07-06

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中清空该数据  

 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多