QTcpSocket 发送数据的几种方法

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); 
    //用于暂存要发送的数据
    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代码 复制代码 收藏代码
  1. QString *a=new QString; 
  2. tcpSocket->write(a,a->length()); 
 QString *a=new QString;
 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中清空该数据 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值