第一范文网 - 专业文章范例文档资料分享平台

网络聊天系统的设计与实现

来源:用户分享 时间:2025/5/28 21:23:20 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

网络聊天系统的设计与实现

4.1.2 服务器处理客户端信息进程/线程设计

我们应该充分利用多核的优势,这会是日后的发展方向。让每个进程要么处理大流量小计算量的工作;要么处理小流量大计算量的工作。这样多个进程放在一台物理机器上可以更加充分的利用机器的资源。

单线程多进程的设计,个人认为更能发挥多核的优势。这是因为没有了锁,每个线程都可以以最大吞吐量工作。增加的负担只是进程间的数据复制,在网游这种复杂逻辑的系统中,一般不会比逻辑计算更早成为瓶颈。如果担心,单线程没有利用多核计算的优势,不妨考虑以下的例子:

计算 a/b+c/d+e/f ,如果我们在一个进程中开三条线程利用三个核同时计算 a/b c/d e/f 固然不错,但它增加了程序设计的复杂度。而换个思路,做成三个进程,第一个只算 a/b 把结果交给第二个进程去算 c/d 于之的和,再交个第三个进程算 e/f 。对于单次运算来算,虽然成本增加了。它需要做额外的进程间通讯复制中间结果。但,如果我们有大量连续的这样的计算要做,整体的吞吐量却增加了。因为在算某次的 a/b 的时候,前一次的 c/d 可能在另一个核中并行计算着。

4.2 客户端设计与实现

4.2.1 登陆模块

登陆模块的实现过程有下面几个步骤:

(1)获取用户名,用户选择的头像,服务器的IP地址和端口号的信息; (2)确认登陆后初始化,创建套接字,连接服务器,向服务器发送用户登陆信息,使其他在线用户得到本用户上线的消息;

(3)初始化过程中显示在线好友,并且对用户的好友上、下线进行管理。

4.2.2 主界面模块

整个程序是以服务器与客户端之间的通信事件而驱动的,本程序划分为三大模块,但最基础的都是得到服务器传来的消息,对消息进行判别再分别交给不同模块进行处理。

本设计的接收消息过程很抽象,笔者在对设计详述之前首先将客户端接收消息的过程提纯出来,其示意图如图4.1所示。事先已对套接字和端口进行过绑定,一旦端口有数据来到,就会触发CMainSocket对象的CMainSocket::OnReceive()

16

网络聊天系统的设计与实现

函数。OnReceive()函数中调用的Receive()函数就可以得到端口进来的以Message结构体封装的消息。再将Message的内容作为WM_RECEIVEMESSAGE的WPARAM参数发送。WM_RECEIVEMESSAGE为自定义的消息,CMyQQClientDlg的OnReceiveMessage()为此消息对应的消息处理函数。OnReceiveMessage()函数处理从wParam参数中传送来的以Message结构体封装的消息内容,针对不同的消息类型进行不同的处理。在以下的每个模块中,会将OnReceiveMessage()函数进行分解,各模块只针对自己的部分进行处理。

图4.4 接收消息过程

管理模块流程图如图4.5所示。

管理模块的功能实现最主要由CLoginLoad 、CMyQQClientDlg两个类来实现。在下文介绍具体功能时,会对两个对话框控件进行分析。

17

网络聊天系统的设计与实现

图4.5 管理模块流程图

CLoginLoad :CLoginLoad是用户登陆的对话框,基于CDialog类。CloginLoad的登录对话框的界面如图4-3所示。其主要功能是获取用户名、用户选择的头像等信息,并且填写服务器IP与端口号。此对话框主要有两个按钮,登陆按钮和退出按钮。用户输入昵称和密码后可按登陆按钮,如不想登陆按退出按钮退出程序。

图4.6 CLoginLoad用户登陆界面

CMyQQClientDlg:CMyQQClientDlg是用户登陆后显示好友列表的对话框,基于CDialog类,CMyQQClientDlg也是本程序最核心的对话框。此对话框只响应用户双击图标的事件,双击后,创建聊天对话框,然后开始进行聊天。

18

网络聊天系统的设计与实现

CMyQQClientDlg对话框的界面如图4.7所示。

图4.7 CMyQQClientDlg好友列表对话框

4.2.3 私聊模块

发送信息模块

聊天模块中,发送信息模块的实现过程有下面几个步骤: (1)用户选择一个好友为聊天对象;

(2)识别是否已经与此好友处于聊天状态(有对应的聊天对话框打开),已处于聊天状态的,将该对话框显示到前台,未处于聊天状态的,创建一个新的对话框;

(3)用户按下发送按钮后,将聊天内容发送出去(服务器接收); (4)在本地即时聊天内容显示的编辑框中添加发送的内容。 2. 接收信息模块

聊天模块中,接收信息模块的实现过程有下面几个步骤: (1)判断接收到信息的类型,是否为好友发来信息;

(2)若该好友第一次发送信息(没有与此好友聊天的对话框),提示用户有新的消息;

(3)用户按下查看消息的提示后,创建新的对话框,加到对话框链表中并显示该对话框,如果已经和此好友处于聊天状态,直接将对应对话框调到前台;

(4)在对应的对话框中显示传递过来的消息。

19

搜索更多关于: 网络聊天系统的设计与实现 的文档
网络聊天系统的设计与实现.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c3w6wp6rnnj3jk4g7snne_5.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top