毕业设计项目:QT开发基于WinSocket的FTP文件传输系统(含客户端和服务端)

基于WinSocket实现C-S文件传输系统——“闪翼文件传输系统”**

QT分别打开客户端和服务器的.pro文件载入工程,编译运行**

1、打开服务器,输入端口号并启动服务器

2、打开一个客户端,在连接服务器成功之前,并不能进行登录操作

3、客户端成功连接服务器,正确输入用户名和密码后客户端登陆成功

4、显示服务器的文件路径(服务器项目的构建文件路径)

5、显示服务器的默认文件列表(默认文件列表为服务器项目所在的文件列表)

6、上传文件到服务器(在客户端创建一个文本文件CliUpload.txt用于上传)

7、从服务器下载文件到客户端(在服务器创建一个文本文件SerDownload.txt用于下载)

8、关闭客户端,需要重连服务器且重新登陆

客户端
在这里插入图片描述
服务端
在这里插入图片描述
部分源码:

#include "clithread.h"

CliThread::CliThread(SOCKET mListen, QWidget *parent) : QThread(parent)
{
   
   
    this->mListen = mListen;
    this->parent = parent;
}

CliThread::~CliThread()
{
   
   
    closesocket(mListen);
    emit isClose();
}

void CliThread::run()
{
   
   
    //客户端地址
    sockaddr_in cli_address;
    int size = sizeof(cli_address);

    while(!isInterruptionRequested())
    {
   
   
        //每次接收新客户端时,将之前的地址信息清0
        memset(&cli_address, 0, sizeof(cli_address));

        //等待新客户端连接
        SOCKET cli_socket = accept(mListen, (SOCKADDR*)&cli_address, &size);
        if(cli_socket == INVALID_SOCKET)
        {
   
   
            msg = "创建cli_socket失败";
            emit isMsg(msg);
            return;
        }

        msg = "客户端连接成功";
        emit isMsg(msg);

        //开启新线程与客户端进行通信
        MsgThread* FileThread = new MsgThread(cli_socket, cli_address, parent);
        FileThread->start();
        //绑定信号和槽,转发消息给ui进程进行界面更新
        connect(FileThread, &MsgThread::isMsg, this, &CliThread::sendMsg);

        connect(this, &CliThread::isClose,
                [=]()
        {
   
   
            msg = "客户端断开连接";
            emit isMsg(msg);
            FileThread->terminate();
            FileThread->quit();
            delete FileThread;
        });
    }
}

void CliThread::sendMsg(QString msg
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

毕业小助手

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值