16,233
社区成员
发帖
与我相关
我的任务
分享
void Widget::getFile()//收取文件
{
QString info;
QFile destFile(recvFileName);
if (!destFile.open(QIODevice::WriteOnly))
QMessageBox::about(this,"提示","文件写入出错");
if(recv->hasPendingDatagrams())
{
QByteArray buf;
QDataStream in(&buf, QIODevice::ReadOnly);
in.setVersion(QDataStream::Qt_4_6);
buf.resize(recv->pendingDatagramSize());
recv->readDatagram(buf.data(), buf.size());
// qDebug() << buf.size();
in >> info;
if(isFinished(info) || (bytesReceived == recvTotalBytes))
{
destFile.write(bufe);
recvTimer->stop();
updateInfo();
ui->saveas_3->setText("接收完成");
count =0;
gn = 0;
bufe.clear();
bytesReceived = 0;
recvTotalBytes = 0;
recvCount = 0;
//timer1.stop();
}
else
{
count ++;
bufe += buf;
bytesReceived += buf.size();
}
}
QString runpath = QCoreApplication::applicationDirPath();
ui->saveas_2->setText(runpath);
}
void Widget::putFile()//发送文件
{
sendInfoTimer->start(1000);
while(!flagOver){
QByteArray dagram;
dagram = sendByteA.mid((i*64512),64512);//每包以60 * 1024字节发送
sender->writeDatagram(dagram,dagram.size(),QHostAddress::Broadcast,sendPort);
qDebug() << dagram.size();
i++;
bytesWritten +=dagram.size();
qDebug() << bytesWritten;
if(i == sendCount)//如果发送包数与应发包数相同,结束
flagOver = true;
mysleep(4);
}
sendInfoTimer->stop();
sendUpdateInfo();
QDataStream sendout(&outBlock,QIODevice::WriteOnly);
sendout.setVersion(QDataStream::Qt_4_6);
QString sendInfo = "stop**";//发送结束标示
sendout<<sendInfo;
sendout.device()->seek(0);
sender->writeDatagram(outBlock,outBlock.size(),QHostAddress::Broadcast,sendPort);
ui->label_2->setText("发送完成");
sendHost = new QHostAddress;
bytesWritten = 0;
i=0;
flagOver = false;
timer1.stop();
}