版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、、软件简介本软件主要完成简单的多客户端实时通信,基于 TCP 协议的局域网聊天软 件。首先启动服务器, 服务器启动后等待客户端的请求, 同时显示出离线用户列 表。客户端通过输入账号和密码进行登录,如果登录成功,则进入聊天界面,同 时显示当前在线好友列表和离线好友列表, 如果登录失败, 则提示用户账号或者 密码错误。 当多个客户端进入聊天室后, 客户之间可以进行群聊, 用户同时可以 选择与当前在线的某一好友进行私聊。二、需求分析2.1、任务概述 随着信息化时代的快速发展,互联网的应用越来越广泛,同时实时聊天通 信技术变得日益重要, 不论在学校、 家庭或者是公司, 局域网聊天已经离不开我 们的日常
2、生活。本软件所设计的局域网聊天系统能够实现局域网的聊天、群聊、 私聊等功能。2.2 、需求规定 该软件可以完成多客户端的通信,服务器端包括:服务器启动,离线用户 列表和在线用户列表, 同时还要完成客户端登录信息的验证, 当有用户登录成功 时,服务器端实时刷新在先用户列表。客户端包括:用户登录,当用户登录成功 后,进入聊天界面,用户之间可以进行群聊和私聊。2.3、对性能的规定2.3.1、时间特性要求所有发送操作的响应的时间一般不超过 1 秒,大量的信息发送后, 应该在 5 秒内显示,如果未发送失败,会提示出相关的错误信息。 当存在离线用户上线时, 用户在线列表更新时间在 3 秒内响应。2.3.2
3、、运行环境规定该软件只能在 windows 环境平台下运行, 内存在 256M 以上,硬盘 1G 空余 空间三、总体设计3.1、软件总体功能结构图客户-服务器程序图(3.1)软件总体功能结构图如图(3.1)所示为该软件总体功能结构图,其中主要包括两大部分:服务器端和客户端。其中服务器端主要包括:连接数据库、用户列表更新、客户端信 息处理。客户端包括:客户端登录、在线用户列表、离线用户列表、用户群聊、 用户私聊。3.2、软件工作流程图图(3.2)软件工作流程图如图(3.2)所示,为整个软件工作的流程图,首先开启服务器,服务器等 待客户端的请求连接,然后客户端发送连接请求(发送账号和密码),然后等
4、待 服务器的回应,服务器收到连接请求后,验证客户信息,如果信息验证成功,则 连接建立成功,好友之间通过服务器端向客户端发送好友信息。3.3、服务器总体设计 服务器端主要功能:(1)数据库设计:设计数据库,用户存储客户信息,例如用户的账号、密 码、昵称等。(2)客户端请求信息处理:主要用来处理用户登录验证,如果验证成功, 则给客户端回复登录成功信息。(3)客户端信息转发:主要完成客户之间通信时,首先客户发送信息给服 务器,服务器端然后在转发给其他的客户。(4)用户列表更新:主要用来处理当有新客户端登录成功后,对现在用户 列表和离线用户列表进行更新。3.4、客户端总体设计 客户端主要功能:(1)客
5、户端登录:主要完成客户端的登录,客户端输入用户名和密码,然 后进行登录,如果登录成功,则跳转到聊天模块,如果登录失败,则提醒用户名 或者密码错误。(2)连接服务器: 通过当前输入的账号和密码, 连接服务器开启的端口号(3)实时通信模块:主要完成在线用户之间进行群聊和私聊。(4)用户列表更新:主要显示当前在线好友列表和离线好友列表。四、详细设计4.1、软件详细的功能流程图图(4.1)软件详细功能流程图4.2、数据库设计该系统采用的是微软的Access数据库,用来存放用户信息,数据字典如下表所示:表(一)用户信息字段名称备注账号昵称StrName密码strPass真实姓名strRealName性别
6、strSex本系统将数据库操作封装为一个类,方便开发人员的操作,相关的函数介绍如下所示:打开数据库函数:void Ope nDataBase();关闭数据库函数:void CloseDataBase();打开记录集:_RecordsetPtr& Ope nRecordset(CStri ng sql);关闭记录集:void CloseRecordset();4.3、程序中定义的核心数据结构1、定义消息头的数据结构 typedef struct tagHeader char type;int len; Header, *pHeader;以上结构体主要包含两个部分内容,type为char型
7、字符,用来存储用户发 送的是什么类型的消息,type定义的取值如下所示:用户登录消息用户发送消息用户私聊消息用户密码验证成功消息用户密码验证失败消息/服务器停止消息/应答消息#defi ne LOGI NO1#defi ne SEND_MESSAGE3#defi ne PRIVATE_MESSAGE4#defi ne PASS_SUCCESS5#defi ne PASS_FAILED6#defi ne SERVER_STOP7#defi ne ASK_NUM8#define ASKNUM_FAILED/应答失败消息#define PRIVATE_ASK10/私聊应答消息#define PRIV
8、ATE_REFUSE11/私聊拒绝消息以上为该软件定义的头消息结构的类型,主要包括:用户登录消息、用户 发送消息、用户私聊消息、用户密码验证成功消息、用户密码验证失败消息、服 务器停止消息、应答消息、应答失败消息、私聊应答消息、私聊拒绝消息。用户 通过发送不同的消息类型给服务器, 服务器收到消息类型后进行判断, 依据不同 的消息类型进行不同的处理。2、定义用户登录信息数据结构typedef struct LogonUserCString name;CString password; User, *pUser;以上结构体主要包含两部分:用户名和密码。当用户登录时,客户端将用 户发送给服务器端,服
9、务器端接收到后,对用户名和密码进行验证。4.4 、客户端详细设计1、用户登录模块(1)用户登录模块流程图进入聊天主界面账号或 密码为空c结束v y图(4.2)用户登录模块流程图(2)程序描述对在用户登录信息界面中输入的各项信息进行初步检验。若发现错误,提 示用户输入错误,让用户重新输入一次。若未发现错误,转入主界面。其中的错 误种类有:输入数据不匹配、账号(数据库没有该账号)、密码(与对应账号的 密码不匹配)。在登录界面中,主要的函数为:判断是否为空:Ide ntifyNull( name,password,server);创建套接字:CreateSocket(server);发送账号:Sen
10、 dName( name);发送密码:Sen dPssword(password);其中发送账号和密码的函数为:/发送用户名void CDlgLog in:Se ndName(CStri ng n ame)/设置发送类型head.type = LOGINO;/发送长度head .len = n ame.GetLe ngth();/发送登陆LOGINO命令字m_pSocket->Se nd(char *)&head,sizeof(Header);/发送账号m_pSocket->Se nd(n ame ,n ame.GetLe ngth();/发送密码void CDlgLog
11、in:Se ndPssword(CStri ng password)head.type = PASS_SUCCESS;head .len = password.GetLe ngth();/发送验证密码PASS_SUCCE命令字 m_pSocket->Se nd(char *)&head,sizeof(Header);m_pSocket->Se nd(password,password.GetLe ngth();2、群聊模块(1)群聊模块流程图用户一一用户二 用户三服务器图(4.3)群聊模块流程图(2)程序描述群聊主要完成多客户端之间的通信,主要的函数及其功能如下: 更新用户
12、列表: UpdateUser() 接收消息: GetSendMessage() 发送消息: OnButtonSend() 其中发送消息的详细程序代码如下: void CChatClientDlg:OnButtonSend()/ TODO: Add your control notification handler code here /得到发送的消息内容CString messaegeContent; m_sendMessage.GetWindowText(messaegeContent); /判断发送的消息是否为空消息 if(messaegeContent = "")Af
13、xMessageBox(" 不能发送空消息! ");/设置鼠标的焦点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(&qu
14、ot;%H:%M:%S");/昵称CString nikeName = theApp.m_strName;CString str = nikeName + " " + t + "rn" + " " +messaegeContent; /发送命令字m_pSocket->Send(char *)&head,sizeof(Header);/发送消息if(m_pSocket->Send(LPCTSTR)str, str.GetLength()/清空消息框 m_sendMessage.SetWindowText(&
15、quot;");CEdit *pEdit = (CEdit*)GetDlgItem(IDC_EDIT_CHATINFO); pEdit->SetFocus();elseAfxMessageBox("网络传输错误!");3、私聊模块(1)私聊模块流程图图(4.4)私聊模块流程图(2)程序描述私聊模块主要实现点对点之间的通信,相关的函数如下所示:发送消息:On Butto nSe nd()获取消息:GetMessage(CStri ng strPrivtMsg)其中发送消息的详细代码如下所示:void CPrivateDlg:O nButto nSen d()/
16、 TODO: Add your con trol no tificatio n han dler code hereCStri ng sen dMsg;m_se ndMessage.GetWi ndowText(se ndMsg);if(se ndMsg ="")AfxMessageBox("不能发送空消息!");CEdit *pEdit = (CEdit*)GetDlgltem(IDC_EDIT_SEND);pEdit->SetFocus();return;Header head;if(theApp.PrivateOrLeave)head.typ
17、e = LEAVE_MESSAGE;head.len = sendMsg.GetLength();CTime time = CTime:GetCurrentTime();CString t = time.Format("%H:%M:%S");CString str1 = theApp.m_strName + " " + t + "rn" + " " +sendMsg+"rn"CString str =theApp.m_strLeaveDesName+'&'+ theApp
18、.m_strName +'&'+theApp.m_strName+t+"rn" + " " +sendMsg+"rn"+'&'/目的主机名 +本地主机名 +时间+回车换行 +消息 m_pSocket->Send(char *)&head,sizeof(Header);发送离线消息命令字LEAVE_MESSAGE,发送用户名+时间+消息内容if(m_pSocket->Send(LPCTSTR)str, str.GetLength()/清空发送文本框 m_sendMess
19、age.SetWindowText("");/在接收文本框显示出来m_receiveMessage.ReplaceSel(str1);/在控件显示消息UpdateData(FALSE);CEdit *pEdit = (CEdit*)GetDlgItem(IDC_EDIT_SEND); pEdit->SetFocus();elseAfxMessageBox(" 网络传输错误! ");4.5、服务器端详细设计1、启动服务器,等待客户连接/创建 socket 对象CServerSocket *m_pSocket;m_pSocket = new CServerSocket;if(!m_pSocket->Create(9999)AfxMessageBox("创建 Socket失败!");return FALSE;if(!m_pSocket->Listen()AfxMessageBox("创建侦听发生错误!&
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年度科研合作合同研究内容和合作期限2篇
- 2024年度研发合作合同:某生物医药企业研发合作合同3篇
- 光伏电池片2024年度购销合同3篇
- 2024年度蔬菜大棚绿色防控技术服务合同2篇
- 2024年度大数据分析与服务合作协议2篇
- 2024年度服务合同:某餐饮企业提供的品牌加盟服务合同
- 二零二四年度市场推广合同:食堂品牌宣传合作协议2篇
- 深圳会议室预订与租赁合同2024年度3篇
- 2024年度图书出版合同标的详细介绍2篇
- 二零二四年度加工贸易合同涉及原材料供应与产品出口
- 解除车辆挂靠合同通知书范本
- 2024年标准的公司劳动合同书(3篇)
- 2024年高一语文必修上册《以工匠精神雕琢时代品质》-新时代的劳动精神-课时63-0921高一【语文 统编版 】《以工匠精神雕琢时代品质》-新时代的劳动精神 -教学设计
- 2024届高考语文一轮复习:现代诗歌 专练1(含答案)
- 果蔬冷库建设项目可行性研究报告
- 小学数学新教材培训
- 【课件】实际问题与一元一次方程(3)球赛积分+课件人教版七年级数学上册
- 2024河南省科技馆招聘23人历年高频难、易错点500题模拟试题附带答案详解
- DL5190.5-2019电力建设施工技术规范第5部分:管道及系统
- 中金公司校园招聘笔试题
- 国开电大软件工程形考作业3参考答案
评论
0/150
提交评论