不知道为什么,传输一个文件,本来是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重新编辑 ]