資源簡介
TCPFileAns.zip

代碼片段和文件信息
#include?“clientwidget.h“
#include?“ui_clientwidget.h“
#include?
#include?
#include?
ClientWidget::ClientWidget(QWidget?*parent)?:
????QWidget(parent)
????ui(new?Ui::ClientWidget)
{
????ui->setupUi(this);
????tcpSocket?=?new?QTcpSocket(this);
????isStart?=?true;
????ui->progressBar->setValue(0);?//當前值
????setWindowtitle(“客戶端“);
????connect(tcpSocket?&QTcpSocket::connected
????[=]()
????{
????????//提示連接成功
????????ui->textEdit->clear();
????????ui->textEdit->append(“和服務器連接成功,等待服務器傳送文件……“);
????}
????);
????connect(tcpSocket?&QTcpSocket::readyRead
????[=]()
????{
????????//取出接收的內容
????????QByteArray?buf?=?tcpSocket->readAll();
????????if(true?==?isStart)
????????{//接收頭
????????????isStart?=?false;
????????????//解析頭部信息?QString?buf?=?“hello##1024“
????????????//????????????????????QString?str?=?“hello##1024#mike“;
????????????//????????????????????????????str.section(“##“?0?0)
????????????//初始化
????????????//文件名
????????????fileName?=?QString(buf).section(“##“?0?0);
????????????//文件大小
????????????fileSize?=?QString(buf).section(“##“?1?1).toInt();
????????????recvSize?=?0;???//已經接收文件大小
????????????//打開文件
????????????//關聯文件名字
????????????file.setFileName(fileName);
????????????//只寫方式方式,打開文件
????????????bool?isOk?=?file.open(QIODevice::WriteOnly);
????????????if(false?==?isOk)
????????????{
????????????????qDebug()?<“WriteOnly?error?49“;
????????????????tcpSocket->disconnectFromHost();?//斷開連接
????????????????tcpSocket->close();?//關閉套接字
????????????????return;?//如果打開文件失敗,中斷函數
????????????}
????????????//彈出對話框,顯示接收文件的信息
????????????QString?str?=?QString(“接收的文件:?[%1:?%2kb]“).arg(fileName).arg(fileSize/1024);
????????????//QMessageBox::information(this?“文件信息“?str);
????????????ui->textEdit->append(str);
????????????ui->textEdit->append(“正在接收文件……“);
????????????//設置進度條
????????????ui->progressBar->setMinimum(0);?//最小值
????????????ui->progressBar->setMaximum(fileSize/1024);?//最大值
????????????ui->progressBar->setValue(0);?//當前值
????????}
????????else?//文件信息
????????{
????????????qint64?len?=?file.write(buf);
????????????if(len?>0)?//接收數據大于0
????????????{
????????????????recvSize?+=?len;?//累計接收大小
????????????????qDebug()?<????????????}
????????????//更新進度條
????????????ui->progressBar->setValue(recvSize/1024);
????????????if(recvSize?==?fileSize)?//文件接收完畢
????????????{
????????????????//先給服務發送(接收文件完成的信息)
????????????????tcpSocket->write(“file?done“);
????????????????ui->textEdit->append(“文件接收完成“);
????????????????QMessageBox::information(this?“完成“?“文件接收完成“);
????????????????file.close();?//關閉文件
????????????????//斷開連接
????????????????tcpSocket->disconnectFromHost();
????????????????tcpSocket->close();
????????????}
????????}
????????}
????);
}
ClientWidget::~ClientWidget()
{
????delete?ui;
}
void?ClientWidget::on_buttonConnect_clicked()
{
????//獲取服務器的ip和端口
????QS
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2016-10-11?14:24??06_TCPFileAns\
?????文件????????3721??2016-01-11?14:23??06_TCPFileAns\clientwidget.cpp
?????文件?????????668??2016-01-06?10:03??06_TCPFileAns\clientwidget.h
?????文件????????3428??2016-01-11?14:22??06_TCPFileAns\clientwidget.ui
?????文件?????????254??2016-01-05?17:18??06_TCPFileAns\main.cpp
?????文件????????4672??2016-01-06?10:21??06_TCPFileAns\serverwidget.cpp
?????文件?????????873??2016-01-05?17:00??06_TCPFileAns\serverwidget.h
?????文件????????2539??2016-01-11?14:24??06_TCPFileAns\serverwidget.ui
?????文件?????????482??2016-01-11?14:14??06_TCPFileAns\TCPFile.pro
- 上一篇:無線自組織網絡論文.rar
- 下一篇:基于Qt實現的多人聊天
評論
共有 條評論