详细功能分析报告_第1页
详细功能分析报告_第2页
详细功能分析报告_第3页
详细功能分析报告_第4页
详细功能分析报告_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

一 软件简介一 软件简介 本软件主要完成简单的多客户端实时通信 基于 TCP 协议的局域网聊天软 件 首先启动服务器 服务器启动后等待客户端的请求 同时显示出离线用户 列表 客户端通过输入账号和密码进行登录 如果登录成功 则进入聊天界面 同时显示当前在线好友列表和离线好友列表 如果登录失败 则提示用户账号 或者密码错误 当多个客户端进入聊天室后 客户之间可以进行群聊 用户同 时可以选择与当前在线的某一好友进行私聊 二 需求分析二 需求分析 2 1 任务概述 任务概述 随着信息化时代的快速发展 互联网的应用越来越广泛 同时实时聊天通 信技术变得日益重要 不论在学校 家庭或者是公司 局域网聊天已经离不开 我们的日常生活 本软件所设计的局域网聊天系统能够实现局域网的聊天 群 聊 私聊等功能 2 2 需求规定 需求规定 该软件可以完成多客户端的通信 服务器端包括 服务器启动 离线用户 列表和在线用户列表 同时还要完成客户端登录信息的验证 当有用户登录成 功时 服务器端实时刷新在先用户列表 客户端包括 用户登录 当用户登录 成功后 进入聊天界面 用户之间可以进行群聊和私聊 2 3 对性能的规定 对性能的规定 2 3 1 时间特性要求 时间特性要求 所有发送操作的响应的时间一般不超过 1 秒 大量的信息发送后 应该在 5 秒内显示 如果未发送失败 会提示出相关的错误信息 当存在离线用户上 线时 用户在线列表更新时间在 3 秒内响应 2 3 2 运行环境规定 运行环境规定 该软件只能在 windows 环境平台下运行 内存在 256M 以上 硬盘 1G 空 余空间 三 总体设计三 总体设计 3 1 软件总体功能结构图 软件总体功能结构图 图 3 1 软件总体功能结构图 如图 3 1 所示为该软件总体功能结构图 其中主要包括两大部分 服务 器端和客户端 其中服务器端主要包括 连接数据库 用户列表更新 客户端 信息处理 客户端包括 客户端登录 在线用户列表 离线用户列表 用户群 聊 用户私聊 3 2 软件工作流程图 软件工作流程图 图 3 2 软件工作流程图 如图 3 2 所示 为整个软件工作的流程图 首先开启服务器 服务器等 待客户端的请求连接 然后客户端发送连接请求 发送账号和密码 然后等待 服务器的回应 服务器收到连接请求后 验证客户信息 如果信息验证成功 则连接建立成功 好友之间通过服务器端向客户端发送好友信息 3 3 服务器总体设计 服务器总体设计 服务器端主要功能 1 数据库设计 设计数据库 用户存储客户信息 例如用户的账号 密 码 昵称等 2 客户端请求信息处理 主要用来处理用户登录验证 如果验证成功 则给客户端回复登录成功信息 3 客户端信息转发 主要完成客户之间通信时 首先客户发送信息给服 务器 服务器端然后在转发给其他的客户 4 用户列表更新 主要用来处理当有新客户端登录成功后 对现在用户 列表和离线用户列表进行更新 3 4 客户端总体设计 客户端总体设计 客户端主要功能 1 客户端登录 主要完成客户端的登录 客户端输入用户名和密码 然 后进行登录 如果登录成功 则跳转到聊天模块 如果登录失败 则提醒用户 名或者密码错误 2 连接服务器 通过当前输入的账号和密码 连接服务器开启的端口号 3 实时通信模块 主要完成在线用户之间进行群聊和私聊 4 用户列表更新 主要显示当前在线好友列表和离线好友列表 四 详细设计四 详细设计 4 1 软件详细的功能流程图 软件详细的功能流程图 服务器端初始化套接字 AfxSocketInit 创建Socket对象 CServerSocket m pSocket 设置绑定Socket端口号 9999 m pSocket Create 9999 开始监听客户端的请求 m pSocket Listen 客户端初始化套接字 AfxSocketInit 动态分配Socket套接字 CSocketClient clientSocket 动态分配登录对话框 CDlgLogin loginDlg 用户 密码是否为空验证 IdentifyNull name password server 创建套接字并且连接服务器 CreateSocket server Connect socketServer 9999 向服务器发送用户登录信息 Head type LOGIN IO head type PASS SUCCESS 建立连接 服务器端接收 OnAccept int nErrorCode 服务器端处理消息 OnReceive int nErrorCode If type LOGIN IO if type PASS SUCCESS Send Header 用户信息验证成功 Header head Head type PASS SUCCESS 更新在线用户列表 UpdateUser Send Header OnReceive int nErrorCode 登录成功 if type PASS SUCCESS 进入聊天界面 在线用户列表更新 UpdateUser 客户端信息转发 if type SEND MESSAGE 接收服务器端转发的消息 if type SEND MESSAGE chatDlg GetSendMessage Send Header 图 4 1 软件详细功能流程图 4 2 数据库设计 数据库设计 该系统采用的是微软的 Access 数据库 用来存放用户信息 数据字典如下表所示 表 一 用户信息 字段名称备注 账号 昵称StrName 密码strPass 真实姓名strRealName 性别strSex 本系统将数据库操作封装为一个类 方便开发人员的操作 相关的函数介 绍如下所示 打开数据库函数 void OpenDataBase 关闭数据库函数 void CloseDataBase 打开记录集 RecordsetPtr 关闭记录集 void CloseRecordset 4 3 程序中定义的核心数据结构 程序中定义的核心数据结构 1 定义消息头的数据结构 typedef struct tagHeader char type int len Header pHeader 以上结构体主要包含两个部分内容 type 为 char 型字符 用来存储用户发 送的是什么类型的消息 type 定义的取值如下所示 define LOGIN IO 1 用户登录消息 define SEND MESSAGE 3 用户发送消息 define PRIVATE MESSAGE 4 用户私聊消息 define PASS SUCCESS 5 用户密码验证成功消息 define PASS FAILED 6 用户密码验证失败消息 define SERVER STOP 7 服务器停止消息 define ASK NUM 8 应答消息 define ASKNUM FAILED 9 应答失败消息 define PRIVATE ASK 10 私聊应答消息 define PRIVATE REFUSE 11 私聊拒绝消息 以上为该软件定义的头消息结构的类型 主要包括 用户登录消息 用户 发送消息 用户私聊消息 用户密码验证成功消息 用户密码验证失败消息 服务器停止消息 应答消息 应答失败消息 私聊应答消息 私聊拒绝消息 用户通过发送不同的消息类型给服务器 服务器收到消息类型后进行判断 依 据不同的消息类型进行不同的处理 2 定义用户登录信息数据结构 typedef struct LogonUser CString name CString password User pUser 以上结构体主要包含两部分 用户名和密码 当用户登录时 客户端将用 户发送给服务器端 服务器端接收到后 对用户名和密码进行验证 4 4 客户端详细设计 客户端详细设计 1 用户登录模块 1 用户登录模块流程图 登录 账号密码是否为空 输入账号 和密码 账 号 或 密 码 为 空 输入不为空 账号 密码是否正确 验证成功 账 号 或 密 码 错 误 进入聊天主界面 结束 图 4 2 用户登录模块流程图 2 程序描述 对在用户登录信息界面中输入的各项信息进行初步检验 若发现错误 提 示用户输入错误 让用户重新输入一次 若未发现错误 转入主界面 其中的 错误种类有 输入数据不匹配 账号 数据库没有该账号 密码 与对应账号 的密码不匹配 在登录界面中 主要的函数为 判断是否为空 IdentifyNull name password server 创建套接字 CreateSocket server 发送账号 SendName name 发送密码 SendPssword password 其中发送账号和密码的函数为 发送用户名 void CDlgLogin SendName CString name 设置发送类型 head type LOGIN IO 发送长度 head len name GetLength 发送登陆 LOGIN IO 命令字 m pSocket Send char 发送账号 m pSocket Send name name GetLength 发送密码 void CDlgLogin SendPssword CString password head type PASS SUCCESS head len password GetLength 发送验证密码 PASS SUCCESS 命令字 m pSocket Send char m pSocket Send password password GetLength 2 群聊模块 1 群聊模块流程图 用户一 服务器 用户三用户二 发送消息发送消息发送消息 图 4 3 群聊模块流程图 2 程序描述 群聊主要完成多客户端之间的通信 主要的函数及其功能如下 更新用户列表 UpdateUser 接收消息 GetSendMessage 发送消息 OnButtonSend 其中发送消息的详细程序代码如下 void CChatClientDlg OnButtonSend TODO Add your control notification handler code here 得到发送的消息内容 CString messaegeContent m sendMessage GetWindowText messaegeContent 判断发送的消息是否为空消息 if messaegeContent AfxMessageBox 不能发送空消息 设置鼠标的焦点 CEdit pEdit CEdit GetDlgItem IDC EDIT SENDINFO pEdit SetFocus return 发送消息的结构体 Header head 发送消息的命令字 head type SEND MESSAGE 发送消息的长度 head len messaegeContent GetLength 当前时间 CTime time CTime GetCurrentTime 时间格式 CString t time Format H M S 昵称 CString nikeName theApp m strName CString str nikeName t r n messaegeContent 发送命令字 m pSocket Send char 发送消息 if m pSocket Send LPCTSTR str str GetLength 清空消息框 m sendMessage SetWindowText CEdit pEdit CEdit GetDlgItem IDC EDIT CHATINFO pEdit SetFocus else AfxMessageBox 网络传输错误 3 私聊模块 1 私聊模块流程图 用户一用户二 发送私聊请求 是否同意私聊 接收私聊请求 等待应答 同意 开始进行聊天 不同意 发送拒绝请求消息 聊天结束 发送 图 4 4 私聊模块流程图 2 程序描述 私聊模块主要实现点对点之间的通信 相关的函数如下所示 发送消息 OnButtonSend 获取消息 GetMessage CString strPrivtMsg 其中发送消息的详细代码如下所示 void CPrivateDlg OnButtonSend TODO Add your control notification handler code here CString sendMsg m sendMessage GetWindowText sendMsg if sendMsg AfxMessageBox 不能发送空消息 CEdit pEdit CEdit GetDlgItem IDC EDIT SEND pEdit SetFocus return Header head if theApp PrivateOrLeave head type LEAVE MESSAGE head len sendMsg GetLength CTime time CTime GetCurrentTime CString t time Format H M S CString str1 theApp m strName t r n sendMsg r n CString str theApp m strLeaveDesName 目的主机名 本地主机名 时间 回车换行 消息 m pSocket Send char 发送离线消息命令字 LEAVE MESSAGE 发送用户名 时间 消息内 容 if m pSocket Send LPCTSTR str str GetLength 清空发送文本框 m sendMessage SetWindowText 在接收文本框 显示出来 m receiveMessage ReplaceSel str1 在控件显示消息 UpdateData FALSE CEdit pEdit CEdit GetDlgItem IDC EDIT SEND pEdit SetFocus else AfxMessageBox 网络传输错误 4 5 服务器端详细设计 服务器端详细设计 1 启动服务器 等待客户连接 创建 socket 对象 CServ

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论