(VCMFC网络聊天工具)详细设计

上传人:宝路 文档编号:6953432 上传时间:2017-09-15 格式:DOC 页数:48 大小:656.26KB
返回 下载 相关 举报
(VCMFC网络聊天工具)详细设计_第1页
第1页 / 共48页
(VCMFC网络聊天工具)详细设计_第2页
第2页 / 共48页
(VCMFC网络聊天工具)详细设计_第3页
第3页 / 共48页
(VCMFC网络聊天工具)详细设计_第4页
第4页 / 共48页
(VCMFC网络聊天工具)详细设计_第5页
第5页 / 共48页
点击查看更多>>
资源描述

《(VCMFC网络聊天工具)详细设计》由会员分享,可在线阅读,更多相关《(VCMFC网络聊天工具)详细设计(48页珍藏版)》请在金锄头文库上搜索。

1、0第 2 章系统分析及开发技术说明2.1 节需求分析2.1.1 节功能需求分析图 2.1功能需求说明图(1)用户端的基本聊天信息发送,这些基本聊天信息包括文本和图片。文本和图片聊天是聊天软件最基础的功能。用户通过输入 IP 来查找用户,并申请加为好友,在对方同意加为好友后,在线用户列表就会更新用户,把加入的用户添加到用户列表中。这样,两个用户之前就可以实现通信了。在信息传输中,预计利用 TCP/IP 协议中的 UDP 协议,这是面向无连接的协议,但发送速度快,用于聊天信息传输用适合。(2)用户端的音视频数据传输,这是本设计的扩展功能。用户可以正常通信后,就可以选择是否进行语音或视频聊天。本功能

2、也将采用 UDP 协议,UDP 协议可能会丢失数据,但对于音视频聊天需要传输大量数据但又允许丢失少量数据的情况下,UDP 的快速发送信息的特点就得到很好的体现。(3)用户端文件传输的功能,用户之间可以断点续传文件。在传文件之前,首功能需求发送基本聊天信息传输音视频数据传输文件白板 共享屏幕保持连接发送文本信息发送图片信息1先创建一信息文件,记录文件传送的一些信息,并根据传输的数据量实时修改。如果没有传完,下次就可以继续打开这个信息文件,接着上次的进度传输。因为文件传输入要求数据不能出错,因此此模块采用 TCP 协议。(4)用户端之间白板和共享屏幕的功能,这个功能有些类似视频的传输,因些并不是很

3、难,可以在视频传输的功能上加以修改。(5)用户之间后台的连接,每个用户隔指定时间会向用户列表中的每一用户发送消息,查看用户是否在线,如果不在线,就更新用户列表,删除用户。2.1.2 节数据需求分析(1)客户端之间聊天信息。在控件上显示时格式化,更易于用户的查看自己发送或接收到的信息。(2)在线用户列表信息。服务器端存放在适当的空间中,在发送给客户端时,对信息列表进行格式化,便于客户端提取信息。(3)客户端向服务器端发送的确认在线信息。包括客户端刚刚启动时的初始化信息和在使用过程中的确认在线信息。(4)其它程序内部可能需要设计的数据结构体。2.1.3 节性能需求分析(1)可靠性高,能在由于系统问

4、题或其它原因产生错误后,作出相对应处理,比如网络初始化失败、服务器不在线等,可以提示用户安全退出本程序,在出现不可知的错误以后,可以尽量安全的退出程序。在程序的设计过程中,要求能尽可能多的设想到用户使用过程中可能发生的事件,并能在判断事件后做出相应的处理,使程序具有较高的容错性能。(2)宜操作性,程序简单易懂,容易上手使用。设计界面是,简化界面的复杂性,模拟 QQ 等现有即时通讯工具的界面,使用户能很容易看懂并使用。(3)开发文档易理解,保证以后自己二次开发或他人接手开发时,能够清晰的理解整个系统的设计思路和实现细节。(4)模块化设计此软件的功能,不同的模块实现不同的功能,使得软件易于以后的维

5、护与扩展,在以后可以更好的完善本软件的功能,更方便于在工作中的应用。22.1.4 节运行需求分析(1)用户界面程序较小,启动速度快,无启动界面。在本地局域网中使用,所以无需进行用户登录,无需认证界面,启动后的应用界面要清爽,设计要简单明了,要具有较高的易用性。(2)故障处理在遇到可预知的故障与情况时,能提示用户并自动退出;在遇到不可预知的故障时能安全退出。2.4 节Winsock 网络编程Windows Sockets 是从 Berkeley Sockets 扩展而来的,其在继承 Berkeley Sockets的基础上,又进行了新的扩充。这些扩充主要是提供了一些异步函数,并增加了符合 WIN

6、DOWS 消息驱动特性的网络事件异步选择机制 5。Windows Sockets 由两部分组成:开发组件和运行组件。开发组件:Windows Sockets 实现文档、应用程序接口(API)引入库和一些头文件。运行组件:Windows Sockets 应用程序接口的动态链接库(WINSOCK.DLL)。2.4.1 节Socket套接字(Socket)最初是由加利福尼亚大学 Berkeley 分校为 UNIX 操作系统开发的网络通信接口,随着 UNIX 操作系统的广泛使用,套接字成为当前最流行的网络通信应用程序接口之一 7。90 年代初,由 Sun Microsystems,JSB Corpor

7、ation,FTP software,Microdyne 和 Microsoft 等几家公司共同制定了一套标准,即 Windows Sockets 规范。Windows Sockets API 是 Microsoft Windows 的网络程序设计接口,它在继承了Berkeley Sockets 主要特征的基础上,又对它进行了重要扩充。这些扩充主要是提供了一些异步函数,并增加了符合 Windows 消息驱动特性的网络事件异步选择机制。这些扩充有利于应用程序开发者编制符合 Windows 编程模式的软件,它使在Windows 下开发高性能的网络通信程序成为可能。3Socket 实际上是指一个通信

8、端点,借助于它,用户所开发的 Socket 应用程序,可以通过网络与其它 Socket 应用程序进行通信。近年来,随着计算机网络与 Windows 95 的流行,许多用户所开发的应用程序需要实现网络间的数据通信。2.4.2 节开发 Windows Sockets 网络通信程序的软、硬件环境所采用的操作系统软件可以是 Windows 95,2000,XP,也可以是 Windows NT,因为它们都支持 Windows Sockets API,在以下的介绍中,我们将以在 Windows XP 环境下的开发为例。 所采用的编程语言一般可选目前较流行使用的可视化和采用面向对象技术的Microsoft

9、Visual C+ 6.0。 Visual C+ 6.0 可在 Windows XP 或 Windows NT 环境下运行,其开发系统增加了全面集成的基于 Windows 的开发工具以及一个基于传统C/C+开发过程的“可视化”用户界面驱动模型。 Visual C+ 6.0 中的 Microsoft 基类(MFC,即 Microsoft Foundation Class)库是一系列 C+类,其中封装着为 Microsoft Windows 操作系统系列编写应用程序的各种功能 。在有关套接字方面,Visual C+ 6.0 对原来的 Windows Sockets 库函数进行了一系列封装,继而产生

10、了 CSocket 、CSocketFile 等类,它们封装着有关 Socket 的各种功能 8。 所采用的网络通信协议一般是 TCP / IP。Windows XP 和 Windows NT 都带有该协议。但是,所开发的网络通信应用程序并不能直接与 TCP / IP 核心打交道,而是与网络应用编程界面 Windows Sockets API 打交道。Windows Sockets API 则可直接与 TCP/IP 核心进行沟通。 TCP / IP 核心协议连同网络物理介质(如网卡)一起,都是提供网络应用程序间相互通信的设施。2.4.3 节CSocket 类编程模型使用 CSocket 对象涉

11、及 CArchive 和 CSocketFile 类对象。以下介绍的针对字节流型套接字的操作步骤中,只有第三步对于客户方和服务方操作是不同的,其他步骤都相同 13。 (1)构造一个 CSocket 对象。 (2)使用这个对象的 Create()成员函数产生一个 socket 对象。在客户方程序中,除非需要数据报套接字,Create()函数一般情况下应该使用默认参数。而对于服务方程序,必须在调用 Create 时指定一个端口。需要注意的是,Carchive 类对象不能与4数据报(UDP)套接字一起工作,因此对于数据报套接字, CAsyncSocket 和 CSocket 的使用方法是一样的。 (

12、3)如果是客户方套接字,则调用 CAsyncSocket Connect() 函数与服务方套接字连接;如果是服务方套接字,则调用 CAsyncSocketListen() 开始监听来自客户方的连接请求,收到连接请求后,调用 CAsyncSocketAccept()函数接受请求,建立连接。请注意 Accept()成员函数需要一个新的并且为空的 CSocket 对象作为它的参数,解释同上。 (4)产生一个 CSocketFile 对象,并把它与 CSocket 对象关联起来。(5)为接收和发送数据各产生一个 CArchive 对象,把它们与 CSocketFile 对象关联起来。切记 CArchi

13、ve 是不能和数据报套接字一起工作的。 (6)使用 CArchive 对象的 Read()、Write() 等函数在客户与服务方传送数据。(7)通讯完毕后,销毁 CArchive、CSocketFile 和 CSocket 对象。2.4.4 节用 VC6.0 进行 Windows Sockets 程序开发的技术要点(1)同常规编程一样,无论服务器方还是客户方应用程序都要进行所谓的初始化处理,这部分工作仍可采用消息驱动机制来先期完成。 (2)一般情况下,网络通信程序是某应用程序中的一模块。在单独调试网络通信程序时,要尽量与采用该通信模块的其它应用程序开发者约定好,统一采用一种界面形式,即单文档界

14、面 SDI、多文档界面 MDI 和基于对话框界面中的一种(这在使用 AppWizard 形成项目 Project文件时有提示) ,尽管这并非必须,但可使通信模块在移植到所需的应用程序时省时省力,因为 Visual C+ 6.0 这种可视化语言在给我们提供方便的同时,也给我们带来某些不便,譬如所形成的项目文件中的许多相关文件与所采用的界面形式密切联系,许多消息驱动功能,随所采用的界面形式不同而各异。 当然,也可将通信模块函数化,并形成一个动态连接库文件(DLL 文件) ,供主程序调用。 (3)以通信程序作为其中一个模块的应用程序往往不是在等待数据发送或接收完之后再做其它工作,因而在主程序中要采用

15、多线程(Multithreaded)技术。即将数据的发或收,放在一个具有一定优先级(一般宜取较高优先级)的辅助线程中,在数据发或收期间,主程序仍可进行其它工作,譬如利用上一个周期收到的数据绘制曲线 。Visual C+ 6.0 中的 MFC 提供了许多有关启动线程、管理线程、同步化线程、5终止线程等功能函数 14。(4)在许多情况下,要求通信模块应实时地收、发数据。譬如调用之的主程序以 0.5 秒为一周期,在这段时间内 ,要进行如下工作:接收数据,利用收到的数据进行运算,将运算结果发送到其它计算机节点,周而复始。我们在充分利用Windows Sockets 的基于消息的网络事件异步选择机制,用

16、消息来驱动数据的发送和接收的基础上,结合使用其他措施,如将数据的收和发放在高优先级线程,在软件设计上,安排好时序,尽量避免在同一时间内,双方都在向对方发送大量数据的情况发生,保证网络要有足够的带宽等,成功地实现了数据传输的实时性 2。6第 3 章详细设计本章将从各个方面介绍本系统的设计。先从基本框架的设计出发,然后逐步介绍好友管理、聊天模块、聊天室模块、传送文件模块、共享屏幕模块、白板模块、音、视频模块和调试模块,所以本章是本论文的重点。3.1 节基本框架设计本节内容将介绍除各个功能模块外的设计,包括界面上的处理、保持好友在线列表等的处理。有些内容可能并不属性框架设计,但这些内容也不具有单独使用一节来介绍的必要,所以把这些内容也一并放到这些节来介绍。这也是为了区分设计周围的处理与各个功能模块的处理。3.1.1 节宏和数据结构的定义程序中用到了很多宏和数据结构,这些宏和数据结构在多个模块中都有用到,因此程序中专门新建一个头文件 Global.h

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 其它办公文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号