聊天室项目BWord下载.docx
- 文档编号:18351965
- 上传时间:2022-12-15
- 格式:DOCX
- 页数:9
- 大小:33.82KB
聊天室项目BWord下载.docx
《聊天室项目BWord下载.docx》由会员分享,可在线阅读,更多相关《聊天室项目BWord下载.docx(9页珍藏版)》请在冰豆网上搜索。
MSG_FIRST
用户请求建立连接
方向由客户端到服务器端
请求建立连接的好友名称
为空
MSG_SUCCESS
建立连接成功
方向由服务器端到客户端
建立成功的好友名称
MSG_MESSAGE
好友间传输的消息
服务器和客户端双向
发出消息的好友名称
默认接收消息好友名称
聊天内容
MSG_USER_ADD
添加好友名称消息
添加的好友名称
MSG_USER_REMOVE
好友离开时删除好友名称
方向由服务器到客户端
删除地的好友名称
MSG_QUIT_CLIENT
客户端退出消息
方向又客户端到服务器端
退出的好友名称
MSG_QUIT_SERVER
方向又服务器端到客户端
MSG_RENAME
通知用户此用户名已存在,应更改用户名再登陆
存在重名的好友名称
空
工程中的c文件及其包含的重要函数:
ListenSocket.c:
(CListenSocket的实现文件)
OnAccept(intnErrorCode)
ClientSocket.c:
(CClientSocket的实现文件)
OnReceive(intnErrorCode)
ServerDlg.c:
(CServerDlg的实现文件)
voidInsertListAction(CMessage&
msg,BOOLbDirection=FALSE);
用于更新服务器端的消息列表。
voidNotifyName(LPCTSTRlpszText,inti)用于更新服务器端的在线用户显示
voidOnButtonKick()用于服务器端的管理员断开与指定用户的连接
voidOnInitDialog()用于初始化主窗体对话框,并且建立套接字并绑定端口,和一些界面的初始化工作。
voidProcessPendingAccept()处理客户端和服务器端的连接工作。
并将连接的套接字的对象指针保留到数组中。
voidProcessPendingRead()处理客户端发送到服务器端的数据。
并对消息做一定的处理。
SendUserNameToClient(CClientSocket*pSocket,CMessagemsg)
将用户名称发送到指定的套接字对应的用户
UpdateClients(CMessagemmsg,intnBufferSize)
将mmsg结构发送给所有用户,即模拟广播发送
CPtrListm_connectionList;
连接到客户端的套接字指针链表
CListenSocket*m_pSocket;
监听套接字的对象指针
intm_iConnNum;
当前连接数
服务器端具体实现
CServerDlg:
:
OnInitDialog()
m_pSocket=newCListenSocket(this);
创建监听套接字
m_pSocket->
Create(1213);
绑定本地的1213端口
Listen();
开始监听
客户端的请求连接
CListenSocket:
OnAccpet()
ProcessPendAccept()
接收客户端包含的WM_FIRST请求
ProcessPendRead()
分析包的内容,并查看是否存在同名用户
若不存在同名构造包含MSG_SUCCESS的CMessage对象,调用CSocket:
:
Send()通知用户已建立连接
若存在同名构造包含MSG_RENAME的CMessage对象,调用CSocket:
Send(),通知存在重名
构造包含MSG_USER_ADD的CMessage对象,调用CSocket->
Send(),发送给该用户已进入聊天室的好友名单
Send(),发送给其他用户,通知新用户登陆
服务器端具体的建立连接的过程
触发退出聊天室退出事件
构造包含MSG_QUIT_SERVER的CMessage的对象,用UpdateClients来使所有连接的客户端都断开连接,
服务器退出并通知用户过程
接收到数据包
CClientSocket:
OnReceive()调用CServerDlg:
ProcessPendRead()来分析获得的包的内容
接收到的包的type为MSG_MESSAGE,则调用UpdateAllClients来通知所有用户
构造包含MSG_USER_REMOVE的CMessage对象,并调用UpdateClients()来通知当前在线好友好友离开
接收到的包的type为MSG_QUIT_CLIENT,则将此用户对应的套接字从套接字链表中删除,并断开连接
服务器端接收到包含MSG_MESSAGE或MSG_QUIT_CLIENT消息的处理过程
客户端的实现流图
调用CClientSocket的Connect建立连接
添加用户名称,调用CClientDlg:
ConnectSocket
发送包含WM_FIRST和用户名的CMessage的对象
启动应用程序
OnReceive()
客户端的启动和尝试建立连接的过程
CclientSocketDoc:
ProcessPengingRead()
包的标志位为MSG_MESSAGE,则处理好友的消息,并显示
包的标志位位MSG_RENAME标记此用户名称已被使用,
包的标志为MSG_SUCCESS,标记者进入聊天室成功
包的标志位为MSG_USER_REMOVE,则将好友名称从好友列表中删除
包的标志位为MSG_USER_ADD,添加用户到好友列表
包的标志位为MSG_QUIT_SERVER,断开与服务器的连接,并通知用户
客户端接收到数据和处理过程
详细设计
登录模块设计
登录模块流程图
用户登录需输入相关信息,经过相关的检测后,方可登录。
登陆后可查看群聊信息,且可与其他人进行聊天
服务器模块
服务器模块流程图
该服务器界面用于显示用户上线与下线的信息,不可用于聊天,是用于将客户端群聊时发送的信息转发给每一个在线用户,处于一个承接的作用。
消息格式化模块
消息格式化是将用户的对应信息合成固定形式进行传送。
消息格式化模块流程图
群聊模块
用户登陆以后,可与显示在线的任何用户进行聊天,也可与在线用户一起进行群聊。
群聊模块程序流程图
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 聊天室 项目