基于Qt的局域网通信设计说明书.doc

上传人:龙*** 文档编号:146125 上传时间:2018-07-11 格式:DOC 页数:12 大小:466KB
下载 相关 举报
基于Qt的局域网通信设计说明书.doc_第1页
第1页 / 共12页
基于Qt的局域网通信设计说明书.doc_第2页
第2页 / 共12页
基于Qt的局域网通信设计说明书.doc_第3页
第3页 / 共12页
基于Qt的局域网通信设计说明书.doc_第4页
第4页 / 共12页
基于Qt的局域网通信设计说明书.doc_第5页
第5页 / 共12页
点击查看更多>>
资源描述

1、基于 Qt 的局域网通信设计说明书 Xxxx 专业 1 班 第 1 页 共 12 页 文档控制记录 序号 版本 日期 修改内容 修改人 审批人 1 V1.0 2017-04-24 创建 2 基于 Qt 的局域网通信设计说明书 Xxxx 专业 1 班 第 2 页 共 12 页 目录目录 . 2 1 目的 . 3 2 总体设计 . 3 3 模块说明 . 4 4 辅助功能设计 . 错误 !未定义书签。 基于 Qt 的局域网通信设计说明书 Xxxx 专业 1 班 第 3 页 共 12 页 1 目的 本文主要介绍利用 Qt实现局域网通信的主要实现流程和一些技术知识点的设计说明。 2 总体设计 2.1 功

2、能特点 这款局域网通信软件是基于 Qt 的实现的 C/S 架构通信,通信功能全部采用QTcpSocket 完成的。该软件分为 2 部分,一部分是服务端,一部分是客户端。 消息通信采用 QJsonValue 的格式进行封装,方便封装和解析。 2.2 模块结构 整个设计可以大致分为服务端、客户端,服务端功能相 对比较单一,仅仅做了客户端的消息管理和转发等。数据库读写等。客户端相对较为丰富。包括好友管理、群组管理、 tcp 消息管理,数据库管理, 整个项目设计的功能的设计流程图大致如下所示: 图 2-1 2.3 开发环境 本项目的采用 Qt进行设计开发, Qt版本为 5.7.0,在后续代码维护和修改

3、的时候建议使用该版本或更高的版本。 服务器(数据库) 客户端 客户端 客户但 客户端 基于 Qt 的局域网通信设计说明书 Xxxx 专业 1 班 第 4 页 共 12 页 3 模块说明 本设计中主要使用 4个大类,一个 QTcpServer,另外一个是 QTcpSocket,主要是用于通信的,但是他们通信的时候采 用了 QJsonValue 的数据格式进行交互,下面针对这个几个主要的模块进行简单介绍下。最后就是数据库 QDataBase 3.1 QTcpServer类 本设计中服务器使用的就是 QTcpServer,我们在使用他的时候只需要知道的一个信号就行了,就是有新的 tcp 链接上来的额

4、时候,可以及时通知我,然后我这边进行客户端的链接处理。如下: m_tcpServer = new QTcpServer(this); connect(m_tcpServer, SIGNAL(newConnection(), this, SLOT(SltNewConnection(); 当有新的客户端链接上来,我们只需要在这个槽函数中进行处理就行了。 3.2 QTcpSocket 类 该类为 TCP 的通信类,主要是链接服务器与客户端的。当连接或者断开开都可以获取该消息通知。并做出相应的处理。 connect(m_tcpSocket, SIGNAL(readyRead(), this, SLOT

5、(SltReadyRead(); connect(m_tcpSocket, SIGNAL(connected(), this, SLOT(SltConnected(); connect(m_tcpSocket, SIGNAL(disconnected(), this, SLOT(SltDisconnected(); 3.3 QJsonValue 类 该类为 TCP 通信的参数传递类,用于封装传递消息的。其格式如下: 图 3-2-1 JSON 数据封装 然后数据输出为: 基于 Qt 的局域网通信设计说明书 Xxxx 专业 1 班 第 5 页 共 12 页 “data“:“name“:“xiaon

6、i“,“passwd“:“123456“,“from“:1,“type“:2 分别表示为 : Type: 消息传输类型(比如登陆、注册、消息发送、文件发送等) From: 表示发送者的 id。 Data:传输数据的封装对象,里面可能是 json 数组或则直接就是对象 / 对于这个 json 格式的解析如下:(其他格式均是如此) / data 的 value 是对象 if (dataVal.isObject() QJsonObject dataObj = dataVal.toObject(); QString strName = dataObj.value(“name“).toString();

7、 QString strPwd = dataObj.value(“passwd“).toString(); m_nId = DataBaseMagr:Instance()-CheckUserLogin(strName, strPwd); qDebug() “Login“ strName strPwd m_nId; / 返回客户端 QJsonObject json; json.insert(“id“, m_nId); json.insert(“code“, -1 = m_nId ? m_nId : 0); json.insert(“msg“, -1 = m_nId ? “error“ : “ok

8、“); if (-1 != m_nId) Q_EMIT signalConnected(); / 发送查询结果至客户端 SltSendMessage(Login, json); 3.4 QSqlDataBase 类 该类为数据库引擎类,在本设计中,服务端和客户端均采用数据库的方式进行数据的保存。 服务端: 创建用户数据库表 query.exec(“CREATE TABLE USERINFO (id INT PRIMARY KEY, name varchar(20), “ “passwd varchar(20), status INT, groupId INT, lasttime DATETIM

9、E);“); 表 3-4-1 用户数据库表设计 创建用群组数据库表 Id Name Passwd Status groupId lasttime 唯一标识 用户名 用户密码 线上状态 群组 id 最后时间 基于 Qt 的局域网通信设计说明书 Xxxx 专业 1 班 第 6 页 共 12 页 query.exec(“CREATE TABLE GROUPINFO (id INT PRIMARY KEY, groupId INT, name varchar(20), “ “userId INT, identity INT)“); 表 3-4-2 用户数据库表设计 客户端: / 创建历史聊天表 que

10、ry.exec(“CREATE TABLE MSGINFO (id INT PRIMARY KEY, userId INT,“ “type INT, direction INT, content varchar(500)“); 表 3-4-3 用户数据库表设计 / 创建我的好友表 query.exec(“CREATE TABLE FRIEND (id INT PRIMARY KEY, name varchar(50)“); 表 3-4-4 用户数据库表设计 / 创建群组表 query.exec(“CREATE TABLE MYGROUP (id INT PRIMARY KEY, name va

11、rchar(50)“); 表 3-4-5 用户数据库表设计 4 界面设计 Id groupId name userId identity 唯一标识 群组 id 群名字 用户 id 用户身份 Id userId type direction content 唯一标识 用户 id 消息类型 聊天方 向 消息内容 Id name 唯一标识(好友 id) 好友名字 Id name 唯一标识(好友 id) 好友名字 基于 Qt 的局域网通信设计说明书 Xxxx 专业 1 班 第 7 页 共 12 页 4.1 服务端界面设计 服务端界面仅仅是一个消息记录的方式,大部分功能都是做的消息转发功能,没有图像界面

12、,因此界面很单一,在用户上下线的时候会提示。 图 4-1 服务端界面 4.2 客户端界面设计 客户端界面相对比较复杂,界面风格仿照 QQ 的主面板设计,分为好友管列表,群组管理列表。 基于 Qt 的局域网通信设计说明书 Xxxx 专业 1 班 第 8 页 共 12 页 图 4-2 客户端主界面 基于 Qt 的局域网通信设计说明书 Xxxx 专业 1 班 第 9 页 共 12 页 基于 Qt 的局域网通信设计说明书 Xxxx 专业 1 班 第 10 页 共 12 页 图 4-3 私聊窗口 聊天界面采用 QWidget 的绘制,模仿 QQ聊天气泡进行设计的,目前支持功 能文件传输功能(服务器转发,先将要发送的文件传给服务器,然后通过服务器将该文件消息发送至对端客户,对端客户可以选择下载文件,也可以选择不下载文件)。 消息聊天机制:客户端将要发送的文本消息封装成 QJsonValue 格式的数据,通过服务器进行查找,如果对端客户在线,那么直接将该消息发送过去,不在线的用户不处理,可拓展为离线消息(保存最近 100 条消息,当下次该用户上线时,服务器将该消息推送给他) 文件发送机制:采用文件分片的方式将整个文件拆分成 byte 进行发送,每次发送 50 个 byte,在局域网可以达到 10M/S 的传输速率。 图 4-4 群组聊天

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文资料库 > 毕业论文

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。