摘 要
计算机网络技术发展至今已经大大超越了人们当初的预想,
无论是人们日常的工作还是学习我们都越来越多的依靠到互联网。
各种实时性的聊天娱乐软件也同时诞生,
而且为我们的即时通讯带来了众多的方便
比如说大家所熟知的腾讯QQ、微软的MSN、移动的Fetion等
都是做的比较成功的实时聊天工具。
随着网络的日益普及,各种聊天工具也层出不穷,
但当我们学习了《TCP/IP协议与网络编程》这门课程之后
我们便会觉得其实要实现简单的网络通讯其实并不难。
接下来的课程设计就是针对一个简单的网络聊天程序,
利用MFC为开发工具实现基本的通讯功能。
在课程设计中,系统开发平台为Windows 2000,
程序设计设计语言采用Visual C++数据库采用MS SQL 2000
程序运行平台为Windows 98/2000/XP。
关键词:
VC6.0聊天室,小型聊天工具,
Visual聊天
1 引 言
1.1课题背景及意义
当今社会正处于信息时代
计算机和通信网络是这一时代所谓"信息基础设施"。
在互联网相当普及的今天,在互联网上聊天对很多"网虫"来说已经是家常便饭了。
聊天室程序可以说是网上最简单的多点通信程序。
一个简单的聊天室, 从程序员的观点来看就是在多个I/O端点之间实现多对多的通信。
基于SOCKET的局域网通信是一种灵活的、易于实现的、低成本的方法。
它可以运行在各种使用TCP/IP协议作为通讯协议的网络上。
而在SOCKET API的帮助下,开发基于SOCKET的局域网通信软件也是易于实现的。
1.2 实验
Visual C++(简称VC)是Microsoft公司推出的目前使用极为广泛的基于Windows平台的C++可视化开发环境。
VC基于C,C++语言,主要由是MFC组成,是与系统联系非常紧密的编程工具,
它兼有高级和低级语言的双重性功能强大
灵活执行效率高几乎可说VC在 Windows平台无所不能。
VC主要是针对Windows系统,适合一些系统级 的开发,
可以方便实现一些底层 的调用。
在VC里边嵌入汇编语言很简单。
当对系统性能要求很高的时候,可用VC开发。
VC在多线程、网络通信、分布应用方面,
有着不可比拟的优势。
1.3 可行性分析
本课程设计主要解决在客户端于客户端的信息交换和客户端于服务器的信息交换及服务器的信息处理上的管理的课程设计。
此程序主要分为两部分:
服务器端和客户端。
服务器端用于提供一个网络端口,等待客户端发出请求,
登录到此服务端然后进行网络通讯和消息的转发;客户端可通过服务器端的IP地址发送连接请求
然后登陆聊天室。
在服务器端的成员列表栏中会显示在线的所有人名单,
有人退出聊天室成员列表会自动除名。
服务器端同时也提供了成员之间的私聊功能,
此时服务器端作为一个转发站进行消息的转发。
整个程序的主体使用了CSocket类的方法,
实现了网络通讯聊天。
先启动服务器端聊天程序,这是聊天服务器需要指定一个端口号,
客户端则根据这个端口号以及服务器的网络地址与服务器进行通信。
在这里,把端口号成为"聊天频道"。
在后面的程序代码分析中将看到,端口号并不等同于聊天频道,
而是在聊天频道上增加一个固定的偏移值使得这个聊天频道不会和系统保留的端口发生冲突。
服务器启动后将在这个指定的端口号中等待客户的连接。
对于公共聊天室,服务器对客户的数目不做任何限制。
而对于私人聊天室,每个聊天频道则只能允许两个客户互相连接,
使得一方发送的信息只能到达对方的主机中。
这里的服务器提供的是公共聊天服务。
通过分析发现,该程序完全可以通过Visual C++中MFC完成。
2需求分析
2.1 设计目的
综合运用本课程及计算机网络的相关知识设计并实现一个网络应用程序,
以Visual C++作为开发平台通过实践复习巩固课堂所学的理论知识
提高对所学知识的综合应用能力。
2.2 设计要求
采用客户/服务器模式,
分为客户端程序和服务器端程序。
服务器采用WINSOCK I/O模型中的任一种,
支持多个客户同时在线聊天。
客户端程序和服务器程序通过网络交换聊天字符串内容,
服务器窗口的列表框中显示当前在线用户支持客户端之间的私聊(可以通过服务器中转
或考虑UDP打洞直接建立端端连接)。
课程设计要求设计并编程完成两个方面的内容:
首先建立一个使用TCP协议的聊天室服务器,
这个服务器可以同时支持多个用户的在线聊天;其次设计一个可以和服务器通信的聊天室客户端。
2.3 功能要求
* 支持多个客户端的连接,
在服务器和多个客户端之间进行数据传输;
* 接收客户端发送的消息
并显示在一个列表框中;
* 在用户连接上后有提示
显示出连接的用户名字;
* 发送信息时可以显示聊天的所有记录;
2.4 系统主要功能和主要功能描述:
服务器端聊天程序必须能够做3件事情:
(1) 服务器聊天程序要在待定的端口上等待来自聊天客户的连接请求
并且需要维护一个客户连接表以记录所有成功的连接。
(2) 服务器聊天程序要及时接受从各个聊天客户发送过来的信息,
然后把这些信息转发到一个或多个客户连接。
对于公共聊天室,服务器将把接受到的信息向除源端外的所有客户发送过去。
(3) 服务器还要监控这些连接的状态,
在客户主动离开或发生故障时从列表中删除相应的表项
并及时更新连接表。
这些要求可以通过CSocket类提供的功能实现。
从CSocket派生出两个类CListenSocket和CClientSocket,它们分别用来侦听客户的连接请求和建立与客户的连接。
服务器只需要一个侦听套接字CListenSocket,
然后根据客户的连接请求动态创建客户套接字CClientSocket。
客户套接字的数量是不可预知的,因此需要一个列表来记录。
MFC的CPtrList类就能实现这种功能。
客户端聊天程序需要完成以下几个功能:
(1) 客户端聊天程序要负责建立和维护与服务器的连接,
通过获取用户的设置尝试与服务器的连接并且随时检测连接的状态。
(2) 客户端聊天程序要把用户输入的信息及时发送到聊天服务器。
一般情况下,当用户输入一行信息并且按下回车键后聊天程序就要把这一行信息发送出去,
才能及时地满足用户的交互需求。
(3) 要随时准备好接受来自服务器的信息,
随时把接受到的信息显示出来让用户及时看到对方的响应。
(4) 在用户退出聊天过程是要关闭与服务器的连接。
比较好的做法是提前通知服务器或者直接给服务器发送一条退出通知,
使得服务器能够及时掌握客户端的连接状态把对方客户的退出信息及时发送到对等实体上。
客户端聊天程序需要使用一个通过CSocket类派生出来的CChatSocket类来实现。
该套接字用来发送一个与服务器的连接请求和维持与服务器的连接,
发送和接收聊天信息完成上述各项功能。
3设计流程图
根据对用户的要求及功能设置可以得到以下的流程图3.1,
用户首先启动客户端登陆服务器并向服务器发送信息
启动服务器服务器等待客户要求并向客户反馈在线用户信息
用户向服务器发送信息服务器处理用户的数据
然后用户开始聊天。
客户端的聊天分为对所有人的信息和私聊的信息,
该信息应通过程序控制分别进行处理。
图3.1 设计流程图
4 调试分析过程描述
1、登陆界面
图4.1登陆服务器界面
2、服务器界面
图4.2 启动服务器界面
3、客户端的连接界面。
图4.3 登陆客户端界面
4、创建用户界面
图4.4 输入名称张三
5、用户连接服务器界面
图4.5 张三登陆服务器
6、为用户的连接界面,
在李四连接后
张三和李四用户同时出现在用户列表内:
图4.6 李四登陆服务器
7、为用户李四的连接界面
在王五连接后张三
李四和王五用户同时出现在用户列表内:
图4.7 王五登陆服务器
服务
上一篇:
VC毕业论文大全
下一篇:
近三年来思想工作小结(德能勤绩廉)