資源簡介
我做的一個TCP文件傳輸的工具,可以在網絡上傳輸任意大小的文件,最近在學習QT,希望有興趣的朋友一起交流一下。如果對這個工具的代碼有什么建設的發個郵件給我heqiangpc@sohu.com謝謝了。
代碼片段和文件信息
#include?“dialog.h“
#include?“ui_dialog.h“
#include?“nfclient.h“
#include?
#include?
#include?
Dialog::Dialog(QWidget?*parent)?:
????QDialog(parent)
????ui(new?Ui::Dialog)
{
sendBytes?=?0;
blockNumber?=?0;
maxBytes?=?0;
cleanQuit?=?true;
????ui->setupUi(this);
ui->progressBar->setRange(0?1000);
ui->progressBar->setValue(0);
}
Dialog::~Dialog()
{
????delete?ui;
}
void?Dialog::on_pushButtonBrow_clicked()
{
ui->lineEditFile->setText(QFileDialog::getOpenFileName(this?tr(“Open?File“)?tr(“.“)?tr(“All?Files?(*)“)));
}
void?Dialog::on_pushButtonSend_clicked()
{
cleanQuit?=?false;
sendBytes?=?0;
blockNumber?=?0;
maxBytes?=?0;
if(ui->lineEditTag->text().isEmpty()?||?ui->lineEditFile->text().isEmpty())
{
QMessageBox::information(this?tr(“Error“)?tr(“Tag?and?File?can?not?be?empty.“));
return;
}
ui->pushButtonSend->setEnabled(false);
nfClient*?client?=?new?nfClient(this);
connect(client?SIGNAL(disconnected())?client?SLOT(deleteLater()));
connect(client?SIGNAL(disconnected())?this?SLOT(on_socketDisconnected()));
connect(client?SIGNAL(fileSize(qint64))?this?SLOT(setProccessBar(qint64)));
connect(client?SIGNAL(bytesWritten(qint64))?this?SLOT(updateProccessBar(qint64)));
connect(client?SIGNAL(message(QString))?this?SLOT(updateStatusLabel(QString)));
connect(client?SIGNAL(onerror(qint32))?this?SLOT(on_socketError(qint32)));
client->sendFile(ui->lineEditFile->text()?ui->lineEditTag->text());
}
void?Dialog::updateProccessBar(qint64?v)
{
blockNumber?++;
sendBytes?+=?v;
ui->progressBar->setValue(sendBytes);
qDebug()?<“sended?number?“?< <}
void?Dialog::updateStatusLabel(const?QString?&status)
{
QString?st;
st?=?“Status:?“?+?status;
ui->labelStatus->setText(st);
}
void?Dialog::setProccessBar(qint64?r)
{
maxBytes?=?r;
ui->progressBar->setRange(0?r-1);
}
void?Dialog::on_socketDisconnected()
{
ui->progressBar->setRange(0?100);
ui->progressBar->setValue(100);
ui->pushButtonSend->setEnabled(true);
cleanQuit?=?true;
}
void?Dialog::on_pushButtonQuit_clicked()
{
if(cleanQuit)
close();
else
{
if(QMessageBox::warning(this?tr(“Are?you?sure!“)
?tr(“You?have?file?transting.\nAre?you?sure?you?want?quit?“)
?QMessageBox::Ok?QMessageBox::Cancel)?==?QMessageBox::Ok)
close();
}
}
void?Dialog::on_socketError(qint32?e)
{
switch(e)
{
case?1:
QMessageBox::warning(this?tr(“Error“)
?QString::fromUtf8(“目標名錯誤!\n請輸入有效的主機名或IP地址。“)
?QMessageBox::Close);
break;
case?2:
QMessageBox::warning(this?tr(“Error“)
?QString::fromUtf8(“文件名錯誤!\n請輸入有效的文件名及路徑。“)
?QMessageBox::Close);
break;
case?3:
QMessageBox::warning(this?tr(“Error“)
?QString::fromUtf8(“連接目標服務器失敗!\n請檢查網絡連接,如果問題依然存在請聯系目標服務器管理員。“)
?QMessageBox::Close);
}
ui->pushButtonSend->setEnabled(true);
}
- 上一篇:DSP上的指紋識別模塊的實現
- 下一篇:數據結構—集合運算實現 實現報告含代碼
評論
共有 條評論