- 1、本文档共19页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
目录
设计原则 -------------------- 1
功能描述-4
设计步骤 ------------------------ 6
使用说明 --------------------- 17
实验结果与分析 ---------------------------- 20
设计原则
计算机网络技术的发展大大超越了人们原来的预期。无论是人们的日常工作还是学习,我们越来越依赖互联网。各种实时聊天和娱乐软件同时诞生,给我们的即时通讯带来了很多便利,比如腾讯、微软的MSN、移动飞信等,都是成功的实时聊天工具。随着网络的日益普及,各种聊天工具层出不穷,但是当我们学习 “TCP/IP协议与网络编程” 这门课程时,我们会觉得实现简单的网络通信并不难。下面的课程设计是针对一个简单的网络聊天程序,使用MFC作为开发工具来实现基本的通信功能。
该程序主要分为两部分: 服务器端和客户端。服务器端用于提供网络端口,等待客户端发出请求,登录服务器端,然后进行网络通信和消息转发。客户端可以通过服务器端的ip地址致连接请求,然后登录聊天室。在线的每个人都将显示在服务器端的成员列表列中。如果有人退出聊天室,会员名单会自动除名。服务器还提供成员之间的私人聊天功能。此时,服务器充当转发站以转发消息。整个程序的主体使用CSocket类的方法来实现网络通信和聊天。
整个程序被设计成两部分: 服务器 (ChatRoomServer) 和客户端 (ChatRoom)
多人聊天的关键是将每个客户端致的消息分发给所有其他客户端。为了解决这个问题,在服务器程序中建立了一组接口列表,以保存与客户端建立了连接的所有服务端口。下面介绍多人聊天的实现原理:
当客户端客户端N向对应的服务端口N致消息时,消息服务端口N将消息复制致集合接口列表 (USERLIST) 中的集合接口缓冲区,然后向每个服务端口致写入消息,从而每个服务端口将消息致致对应的客户端。这样,所有客户端都获得消息消息,并实现多人聊天功能。
BOOL CClientSocketList:: 致 (字符 * buff,int n)
{CClientSocket * curr = 头;
时 (curr)
{curr-Send(buff,n);
curr = curr-Next;}
返回true;}
当USERLIST表时,它是多人聊天程序的核心。它是一个动态变化的链表。空表示没有客户端建立连接。当不为空时,每个元素都意味着客户端已经与服务器建立了连接。
以下程序为私聊功能的实现:
BOOL CClientSocketList::OnlySend(char * buff,int n,int who)
{
CClientSocket * curr = Head;
时 (curr who0)
{curr = curr-Next;
谁 --;}
curr-Send(buff,n);
返回true;}
以下是本节目的效果截图:
服务器端效果截图
用户 “xiaoQ” 登录界面
用户 “小” 的登录界面
功能描述
多人会话。这个程序分为服务器和客户端。当客户端想要进入聊天室时,必须通过网络连接致服务器,以实现与其他客户端的通信功能。最简单的通信方式之一是多人会话,它使用多线程同时监视多个用户的信息。服务器转发消息,让每个人都能得致消息,实现多人会话。
一对一会话。该程序的服务器端不仅提供了多人对话的功能,还提供了私人聊天功能,可以实现1对1聊天。也就是说,当消息被转发时,私人聊天的消息只致致私人聊天的对象,而其他人看不致消息,但是消息会通过服务器被转发,然后致达目标客户端。
个性化昵称。为了区分用户,此程序还内容用户自定义个性化昵称。当用户登录时,用户可以为自己设置昵称,以便在多人会话期间被识别。同时,服务器端也会使用这个昵称作为客户端的登录标识,服务器管理员也会显示在其他用户的在线列表中。
4.服务器登录。服务器打开后,它处于侦听状态,在多个线程中工作,并接受来自每个用户的连接请求。客户端只需要输入服务器的ip地址,端口在服务器处自动生成。
开始
开始
着陆
等待客户端登录
客户端用户
创建子套接字
消息
聊天服务器
聊天客户端
消息
成功着陆
连接
致消息
显示
找致客户端并显示它
着陆失败
致ID和IP
设计步骤:
该聊天程序的实现工具是Visual C ++ 6.0 MFC,主要使用用于网络编程的CSocket类来实现网络通信功能。主程序分为两个部分:
在服务器端,界面如下图所示:
主要代码如下:
(1) 使用CChatRoomServerDlg函数初始化服务器端
void CChatRoomServerDlg::OnPaint()
{if (IsIconic())
{CPaintDC dc(t
文档评论(0)