socket 服务器多线程文件传输,实现基于多线程的文件传输

  • Post author:
  • Post category:其他


源代码

我在代码里面都有非常详细的注释,所以就直接放上代码啦

1 客户端

头文件 mainwindow.h

ifndef MAINWINDOW_H

define MAINWINDOW_H

include

QT_BEGIN_NAMESPACE

namespace Ui { class MainWindow; }

QT_END_NAMESPACE

class MainWindow : public QMainWindow

{Q_OBJECT

public:MainWindow(QWidget *parent = nullptr);

~MainWindow();

signals:void startConnect(unsigned short,QString);

// 发送文件信号

void sendFile(QString path);

private slots:void on_connectServer_clicked();

void on_selFile_clicked();

void on_sendFile_clicked();

private:Ui::MainWindow *ui;

};

endif // MAINWINDOW_H

源文件 mainwindow.cpp

include “mainwindow.h”

include “ui_mainwindow.h”

include

include

include “sendfile.h”

include

MainWindow::MainWindow(QWidget *parent): QMainWindow(parent)

, ui(new Ui::MainWindow)

{ui->setupUi(this);

// 设置IP和端口

ui->ip->setText(“127.0.0.1”);

ui->port->setText(“8989”);

// 设置进度条

ui->progressBar->setRange(0,100);

ui->progressBar->setValue(0);

// 客户端在子线程中连接服务器

// 创建线程对象

QThread* t = new QThread;

// 创建任务对象

SendFile* worker = new SendFile;

// 将worker移动到子线程t中

worker->moveToThread(t);

// 当发送sendFile信号,让worker的sendFile函数处理(子线程)

connect(this,&MainWindow::sendFile,worker,&am