实现功能:在首先在客户界面上点击连接,连接成功之后在服务器界面上点击传输文件按钮,弹出文件对话框,选择所需传输的文件之后,点击发送文件即可。接着查看对应路径便会发现文件已在对应路径之下。具体操作流程如下:
点击客户端上的connect按钮,服务器上显示成功链接。
点击选择文件,弹出文件对话框,点击打开。
点击发送文件,弹出对话框,点击ok,待进度条长满100%之后文件传输完成,便能在相应文件夹中查看。
好啦,话不多说,附上代码:
clientWidget.h
#ifndef CLIENTWIDGET_H
#define CLIENTWIDGET_H
#include <QWidget>
#include <QTcpSocket>
#include <QFile>
namespace Ui {
class ClientWidget;
}
class ClientWidget : public QWidget
{
Q_OBJECT
public:
explicit ClientWidget(QWidget *parent = nullptr);
~ClientWidget();
private slots:
void on_pushButton_clicked();
private:
Ui::ClientWidget *ui;
QTcpSocket* tcpSocket ;
QFile file ; //文件对象
QString fileName ;//文件名字
qint64 fileSize ; //文件大小
qint64 recvSize ; //已接受文件的大小
bool isStart ; //确认是否为头
};
#endif // CLIENTWIDGET_H
serverWidget.h
#ifndef SERVERWIDGET_H
#define SERVERWIDGET_H
#include <QWidget>
#include <QTcpServer> //监听套接字
#include <QTcpSocket> //通信套接字
#include <QFile>
#include <QTimer>
QT_BEGIN_NAMESPACE
namespace Ui { class ServerWidget; }
QT_END_NAMESPACE
class ServerWidget : public QWidget
{
Q_OBJECT
public:
ServerWidget(QWidget *parent = nullptr);
~ServerWidget();
void sendData() ; //发送文件数据的函数
private slots:
void on_ButtonFile_clicked();
void on_ButtonSend_clicked();
private:
Ui::ServerWidget *ui;
QTcpServer* tcpServer ; //监听套接字
QTcpSocket* tcpSocket ; //通信套接字
QFile file ; //文件对象
QString fileName ;//文件名字
qint64 fileSize ; //文件大小