zoukankan      html  css  js  c++  java
  • [转]

    我们知道,tcp网络编程发送数据是利用套接字来实现,将要传输的东西转化为数据流再进行传输,为了确保数据传输的准确性和安全性,我们在发送数据流前发送一个quint32的常量来表示所要发送的数据的大小;当我们要发送图片时,最关键的是获得图片的大小:

    QBuffer buffer;

    QPixmap(":/images/1.png").save(&buffer,"BMP");

    知道了图片的大小就可以传输图片了;发送端:

    QDataStream stream( &data, QIODevice::WriteOnly );
      stream.setVersion( QDataStream::Qt_4_0 );
      stream << (quint32)buffer.data().size();
      data.append( buffer.data() );

      tcpSocket->write(data);

      data.resize(0);

    接收端:
    int dataSize;

    while(socket.byteAvaileble() > 0 )

    {

    if( dataSize == 0 )
      {
        QDataStream stream( &socket );
        stream.setVersion( QDataStream::Qt_4_0 );
      
        if( socket.bytesAvailable() < sizeof(quint32) )
          return;
          
        stream >> dataSize; //获取接受到的数据大小
      }
      
      if( dataSize > socket.bytesAvailable() )
        return;

      QByteArray array = socket.read( dataSize );
      QBuffer buffer(&array);
      buffer.open( QIODevice::ReadOnly );
      
      QImageReader reader(&buffer, "PNG");
      QImage image = reader.read();

      if( !image.isNull() )
      {
        ui.imageLabel->setPixmap( QPixmap::fromImage( image ) );
        ui.imageLabel->setText( tr("") );
       dataSize=0;
      }
      else
      {
      }

    }

     

    原文地址:http://blog.csdn.net/hsl17/article/details/6739171

     

     

  • 相关阅读:
    php date 时间差
    array_merge 和 + 号的的区别
    apache 添加https后导致http无法访问
    php 获取url
    TP5 事务处理
    LeetCode 每日一题 (盛最多水的容器)
    LeetCode 每日一题 (字符串转换整数 (atoi))
    LeetCode 每日一题(5. 最长回文子串)
    LeetCode 每日一题 (3 无重复字符的最长子串)
    LeetCode 每日一题 (两数相加)
  • 原文地址:https://www.cnblogs.com/suanec/p/4205189.html
Copyright © 2011-2022 走看看