• 4984阅读
  • 0回复

不能传其它格式的文件,好象就只能传文本文件,为什么 [复制链接]

上一主题 下一主题
离线weilong122
 

只看楼主 倒序阅读 楼主  发表于: 2006-05-16
不知道为什么,传输一个文件,本来是120KB,第一次传的时候, 收到的是1KB的空的文件
从新传的时候,收到完整的文件,不过开始的地方有一个乱码.

而且不能传其它格式的文件,好象就只能传文本文件. 求达人给点意见

===================================================
发送文件:

void Sender::SendFile()
{
 
  if(writed==-1)
  {
          QByteArray datagram;
   
    QDataStream out(&datagram,QIODevice::WriteOnly);
    out << flag;                      
    out << fileData.size();
    out << fileName;
   
 
    send_Socket->writeDatagram(datagram.data(), datagram.size(),
                                        QHostAddress(Ipedit->text()), 5060);
  writed=0;
  filesize = fileData.size();
    showEdit->append("send flag finish!");
    }
 
 
 
  while(writed<filesize)
  {
                   
  if((writed + 1024) > fileData.size())
        {
          towrite = filesize-writed;
writed += (int)send_Socket->writeDatagram((fileData.data()+writed),towrite,
                                              QHostAddress(Ipedit->text()), 5060);
          writed = -1;
         
          return;
         
        }
   
      else
        writed += (int)send_Socket->writeDatagram((fileData.data()+writed),towrite,
                                            QHostAddress(Ipedit->text()), 5060);
   
  }
                                                             
}


============================================================

接收文件:
void Sender::recData()
{
      QByteArray datagram;
 
  datagram.resize(receive_Socket->pendingDatagramSize());
  receive_Socket->readDatagram(datagram.data(), datagram.size());
  QDataStream in(&datagram,QIODevice::ReadOnly);
     
                     
             
      in >> filesize;
      in >> fileName;
      //in >> fileData;
      //filesnow = fileData.size();
     
             
      while(filesnow < filesize)
      {
        filesnow += (int)receive_Socket->bytesAvaila();
        fileData += receive_Socket->readAll();

        if(filesnow >= filesize)
        {
           
            filesize = 0;
            filesnow = 0;
            emit FileReady(); //该信号发送后开始写文件
           
            break;            
        }//if
     
      }//while
   
 
}
[ 此贴被XChinux在2006-05-16 09:02重新编辑 ]
快速回复
限100 字节
 
上一个 下一个