基于Qt的局域网通信设计说明书论文.docVIP

  • 10
  • 0
  • 约3.99千字
  • 约 12页
  • 2018-02-28 发布于贵州
  • 举报
基于Qt的局域网通信设计说明书论文

文档控制记录 序号 版本 日期 修改内容 修改人 审批人 1 V1.0 20104-24 创建 2 目录 目录 2 1目的 3 2总体设计 3 3模块说明 4 14 1目的 2总体设计 2.1 2.2 模块结构 整个项目设计的功能的设计流程图大致如下所示: 图2-1 2.3 开发环境 本项目的采用Qt进行设计开发,Qt版本为5.7.0,在后续代码维护和修改的时候建议使用该版本或更高的版本。 3模块说明 3.1 QTcpServer类 本设计中服务器使用的就是QTcpServer,我们在使用他的时候只需要知道的一个信号就行了,就是有新的tcp链接上来的额时候,可以及时通知我,然后我这边进行客户端的链接处理。如下: m_tcpServer = new QTcpServer(this); connect(m_tcpServer, SIGNAL(newConnection()), this, SLOT(SltNewConnection())); 当有新的客户端链接上来,我们只需要在这个槽函数中进行处理就行了。 3.2 QTcpSocket类 该类为TCP的通信类,主要是链接服务器与客户端的。当连接或者断开开都可以获取该消息通知。并做出相应的处理。 connect(m_tcpSocket, SIGNAL(readyRead()), this, SLOT(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数据封装 然后数据输出为: {data:{name:xiaoni,passwd:},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(); 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); 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 DATETIME);); Id Name Passwd Status groupId lasttime 唯一标识 用户名 用户密码 线上状态 群组id 最后时间

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档