QT网盘项目实战

读取配置文件

准备好配置文件并加载配置文件:IP        PORT

客户端通过主动连接服务端,通过IP得到服务端的地址,通过PORT来实现端对端的通信。

服务端监听本地IP,等待客户端连接。

这里为了将应用程序的配置参数和选项与代码分离,提供更好的灵活性和可维护性。试想一下从代码中找到代码中定义的变量然后修改和直接找到配置文件修改哪个方便?

client.config    //客户端配置文件


127.0.0.1
8888
server.config    //服务端配置文件

127.0.0.1
8888

在tcpclient.h中设置变量存储IP和PORT(m_strIP和m_usPort),并通过loadConfig()函数来加载变量的值。

客户端服务器搭建

计算机通信需要通过一定的协议,客户端和服务端都遵循这个协议才能稳定安全的通信,本项目的通信协议如下所示:

struct PDU{
    uint uiPDULen;      //消息分配的空间
    uint uiMsgType;     //消息类型
    char caData[64];    //存放文件名
    uint uiMsgLen;      //实际消息长度
    int csMsg[];        //存放实际消息
};

这里的PDU的占用空间是不定的,由于csMsg是用来根据信息开辟真正的空间,存放实际的消息。因此一个对于一个PDU来说,总的占用空间是sizeof(PDU)+csMsg实际开辟出来的空间。(sieof(PDU)只包含前四项所占的内存空间)

sizeof(PDU) = sizeof(uint) + sizeof(uint) + sizeof(char[64]) + sizeof(uint) + sizeof(int*)
           = 4 + 4 + 64 + 4 + 8
           = 84

而具体的业务流程如下图所示:

 对于TcpServer、MyTcpServer、MyTcpSocker感到迷惑的请看下图:

登陆注册退出注销

所有用户信息保存在数据库中,数据库采用sqlite3而不是MySQL。添加类OpeDB来操纵数据库,为了支持数据库需要添加`sql`支持。在server执行前需要把数据库连接好,因此在main函数中提前设置好数据库的连接。数据库连接采用单例模式。

点击`x`来退出客户端的程序流程图如下:

1、当有client和server连接时,在incommingConnection函数中绑定-当offine被触发时调用deleteSocket函数,该函数负责从client连接队列中删除下线的socket.

2、当有client断开连接时,会触发clientOffline函数,该函数会调用OpeDB中的handleOffline函数来修改数据库中的`online`字段。同时发送offline信号,而该信号会触发deleteSocket的调用(disconnected和clientOffline的绑定在MyTcpSocket的构造函数中就进行了)。

界面设计:新增book界面和friend界面,当用户成功登录后会将TcpClient的UI隐藏而将OpeWidget的界面显示出来。根据选择的不同-book或friend显示不同的内容。

而对于显示在线用户来说:

        1、点击按钮后触发showOnline()函数,该函数将 请求发送给server

        2、server根据请求操纵数据库得到online字段为1的用户名并回传给client

        3、client根据回传的消息类型,调用showAllOnlineUsr函数,该函数进一步调用showUsr

 本来想再画一下查找用户的函数图,看了下查找用户、查看在线用户、添加好友等都是先向服务器发送请求,然后服务器回复,客户端接收到后做进一步处理,区别不大,自己理解一下就可以。

至于私聊和群聊,发送者向服务端传递自己要交流的对象的名字,服务器通过数据库找到对应的接收对象并将pdu转发给接收对象。

接下来的就是文件的一系列操作了:

看了一下,都是客户端与服务端之间的交互以及一些对文件的处理。需要熟悉QT的一些类的使用,例如QDir文件操纵等,逻辑比较简单。

源代码如下:https://download.csdn.net/download/pan_1214_/87811515

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Qt Widgets项目实战是一种使用Qt框架和Widgets库开发应用程序的实践方法。以下是一个简单的Qt Widgets项目实战示例: 步骤1:创建Qt Widgets项目 使用Qt Creator创建一个新的Qt Widgets项目。选择“File”->“New File or Project”,然后选择“Qt Widgets Application”模板。按照向导的指示命名项目并选择保存路径。 步骤2:设计界面 使用Qt Designer设计应用程序的界面。在Qt Creator中打开.ui文件,拖拽并放置各种Widgets来构建用户界面。可以设置属性、布局、信号和槽等。 步骤3:编写业务逻辑 在Qt Creator中打开对应的源代码文件,编写与界面交互的业务逻辑。可以处理用户输入、响应事件、执行操作等。使用C++语言编写代码,可以使用Qt提供的各种类和API。 步骤4:编译和运行 点击Qt Creator中的“Build”按钮编译项目,并且确保没有错误和警告。然后点击“Run”按钮运行应用程序,查看界面和功能。 步骤5:调试和优化 如果遇到问题,可以使用Qt Creator提供的调试工具来调试代码。可以设置断点、观察变量值、单步执行等。根据需要,优化代码以提高性能或修复错误。 步骤6:部署和发布 完成开发后,可以使用Qt Creator提供的部署工具将应用程序打包成可执行文件。根据目标平台的要求,选择正确的编译选项和依赖项,并生成应用程序的发布版本。 这只是一个简单的Qt Widgets项目实战示例,实际开发中可能涉及到更多的功能和复杂性。但是通过这个示例,你可以了解Qt Widgets项目的一般开发流程和步骤。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值