毕业设计(论文)网络实时聊天系统开发与设计.doc

上传人:仙人指路1688 文档编号:3984571 上传时间:2023-03-30 格式:DOC 页数:29 大小:355KB
返回 下载 相关 举报
毕业设计(论文)网络实时聊天系统开发与设计.doc_第1页
第1页 / 共29页
毕业设计(论文)网络实时聊天系统开发与设计.doc_第2页
第2页 / 共29页
毕业设计(论文)网络实时聊天系统开发与设计.doc_第3页
第3页 / 共29页
毕业设计(论文)网络实时聊天系统开发与设计.doc_第4页
第4页 / 共29页
毕业设计(论文)网络实时聊天系统开发与设计.doc_第5页
第5页 / 共29页
点击查看更多>>
资源描述

《毕业设计(论文)网络实时聊天系统开发与设计.doc》由会员分享,可在线阅读,更多相关《毕业设计(论文)网络实时聊天系统开发与设计.doc(29页珍藏版)》请在三一办公上搜索。

1、网络实时聊天系统开发与设计摘要 随着现今计算机与英特网的飞速发展与普及,人与人之间的交流也随之越来越方便,使用网络聊天的人群也越来越大,人们对网络聊天的需求也日益显著。 本文主要提出网络实时聊天系统的开发与设计,是一个基于VC开发平台设计与实现的聊天系统。能实现基于VC+的网络实时聊天,本系统具有单独的客户端和服务器端。服务器应用程序能够接受来自客户端的广播,然后向客户端发送本机的IP与服务端口号,让大家能通过客户端接入到服务器进行聊天。服务器负责接收来自客户端的聊天信息,然后通过不同的IP发送给指定的地址,同时服务器还可以监听客户端的登录与退出。主要使用Windows Socket编程,建立

2、Client/Server模型,实现一个服务器和多个客户端的一对多模式,各个客户端之间实现相互的通信。关键字:Windows Socket、Client/Server、套接字、实时通信Abstract With the rapid development and popularization of the Internet and the computers.It will be more and more convenient of the communication between us .The use of network chat between people also beging

3、 more and more big, and people chatting on the network are more and more frequently.This paper mainly puts forward network real-time chat system development and design, was designed as a development platform based on VC design and implementation of the chat system.Can realize real-time chat based on

4、 vc + + network, this system has a single client and server. The server is responsible for receiving information from client chat, then through different IP sent to the designated address, the server can also monitored client login and exit. This chat system mainly uses Windows Socket programming,an

5、d set up a Client / Server model and implement a server and multiple client one-to-many model.So that each Client realize mutual communication between. Keywords: Windows Socket, Client / Server, Socket, real-time communication目录摘要IAbstractII目录III1 绪论11.1 系统现状11.2 本系统研究内容22 系统的开发环境与相关关键技术32.1 开发环境32.

6、2 相关关键技术32.2.1 Visual C+与面向对象程序设计32.2.2 TCP/IP协议、UDP协议52.2.3 M F C(Micrososft Fundation Classes,即微软的基本类库)62.2.4 Windows Socket 编程72.2.5 Client/Server结构(客户机/服务器模式)93 系统需求分析与设计开发103.1 系统需求分析103.2 系统设计113.2.1 设计原则113.2.2 工作流程113.2.3 功能设计124 系统的实现144.1 服务请求规范144.1.1 服务器端144.1.2 客户端144.2 主要模块的设计分析144.2.1

7、 客户端模块144.2.2 服务器端类结构184.3 系统运行效果194.3.1 服务器端效果图194.3.2 客户端效果图204.4 系统测试204.4.1 测试意义204.4.2 软件测试的目标224.4.3 软件测试的方法22总结24致谢25参考文献261 绪论近年来计算机技术的快速发展,特别是计算机网络的发展,越来越深刻的改变了人们生活的方方面面。使得人们能以更低廉的价格,开发出更方便、更实用的网络工具。各种在线服务系统,更是深刻的影响了人们的联系方式,使得人们可以在远隔千里之遥随时通讯。网上聊天系统是为人们进行交流和联系提供的一个平台。利用现代的网络资源优势和技术优势,通过提供完善的

8、网上聊天系统的管理,以达到增进人与人之间的信息交流和沟通的目的,并以此加快人们的信息化建设。在市场上,关于网上聊天室系统开发的软件有很多,本系统基于VC开发,通过套接字SOCKET实现,作为今后将从事软件开发的学生,即时了解和掌握流行的即时通讯机制并且应用到实践过程中,将极大的提高自己的设计和开发软件的积极性;提升自己的理论和技术水平,跟踪国内外最新的技术和开发模式,为以后类似的开发积累经验;同时,开发出来的作品也可以真正运用到实际当中。网络聊天室是当今广泛应用的一种网络服务, 它为广大网民提供了一种方便快捷的沟通方式, 在线聊天是上网的重要活动之一。1.1 系统现状文本方式聊天室: 基于We

9、b 的聊天室有其独特的优势。它不需要安装专门的软件,Web 浏览器就可以使用聊天服务;它集成在Web 服务器中,不需额外的硬件支持,便于广大中小型客户建设和使用。所以, 基于Web 的聊天室仍然被广泛采用。但是单纯聊天的一般内容比较单一,主要局限于角色认知过程中职业、地域、性别等方面的扩展,难以实现“ 失去他人注视的真实自我的展现”。 视频聊天室、语音聊天室、动画聊天室: 随着富媒体技术的广泛应用, 一种结合文本、语音和人脸动画或视频的三维语音视频聊天室在互联网上出现。复合聊天室: 典型代表是UC 聊天室, 它打破了传统IM软件主要用于文字通讯的单一模式, 将有声有色、图文并茂的场景融入聊天模

10、式, 加之视频电话、可断点续传的文件输、消息群发功能和在线游戏功能以及同学录( 团体) 等有机结合, 形成一个完整的网上即时通讯娱乐平台, 带来聊天新感觉。第十六次CNNIC 调查结果显示: 在网络用户经常使用的网络服务/功能调查中, 网上聊天( 聊天室、QQ、ICQ 等)占被调查人群的42.6%, 处于第四位, 作为操作简便也是出现最早的网上聊天方式, 聊天室聊天又是其中最普及的一种。在网站由窄带向宽带发展的今天, 新一代的聊天室充分利用富媒体技术, 以崭新的形象吸引受众视听。1.2 本系统研究内容 本系统主要研究内容是基于VC+的网络实时聊天软件,主要分为服务器端和客户端,本系统研究目标是

11、实现用户通过登录客户端,可以与服务器端进行文字信息的传递。主要使用windows socket编程,建立Client/Server模型,初始化套接字,然后建立一个监听的套接字,设定服务器地址信息,并将监听端口绑定到这个地址,最后开始监听,并且接收客户端的链接以及与客户端进行信息的传递。主要需要进行一下的准备工作与学习:1、 了解本系统的特点以及所需要实现的功能;2、 对本系统开发所需要的软件环境要有所了解和掌握基本编程能力,如:Visual C+ 6.0 、VC+、MFC等。3、 大量查阅相关资料,对本系统的研究有一个清晰的思路,了解相关具体技术,做好前期的准备工作。1.3 研究方法与技术路线

12、 首先根据设计要求查询相关技术资料,充分了解本聊天软件的具体特点、各部分的组成等,查阅资料掌握如何利用协议分析工具分析IP数据报报文格式,体会数据报发送、转发的过程。其次,通过分析截获TCP报文首部信息,理解首部中的序号、确认号等字段是TCP可靠连接的基础。并通过分析TCP连接的三次握手建立和释放过程,理解TCP连接建立和释放机制。还要深入研究开发本系统所需要的相关理论知识和实际操作技术,通过需求分析确定本课题的总体设计方案。对比并确定所需要的软件开发工具,深入学习相关软件的使用和相应的编程技巧。最终确定采用SQL数据库访问技术和socket套接字实现系统软件的开发。对以上研究资料进行认真的整

13、理并进行详细编写,完成论文的撰写工作。2 系统的开发环境与相关关键技术2.1 开发环境本系统是一个面向中小型企业内部使用的聊天软件,开发过程中必须选择合适的硬件和软件,应该具有完备的开发设备,性能稳定的开发机器,操作系统的选择要比较适当,如Windows 2000 /Windows XP /Windows2003,开发平台要求Microsoft Visual C+ 6.0,使用开发语言为C+。2.2 相关关键技术2.2.1 Visual C+与面向对象程序设计面向对象编程(Object Oriented Programming,OOP,面向对象程序设计)是一种计算机编程架构。OOP 的一条基本

14、原则是计算机程序是由单个能够起到子程序作用的单元或对象组合而成。OOP 达到了软件工程的三个主要目标:重用性、灵活性和扩展性。为了实现整体运算,每个对象都能够接收信息、处理数据和向其它对象发送信息。面向对象程序设计中的概念主要包括:对象、类、数据抽象、继承、动态绑定、数据封装、多态性、消息传递。通过这些概念面向对象的思想得到了具体的体现。 1)对象:对象是运行期的基本实体,它是一个封装了数据和操作这些数据的代码的逻辑实体。 2) 类:类是具有相同类型的对象的抽象。一个对象所包含的所有数据和代码可以通过类来构造。 3) 封装:封装是将数据和代码捆绑到一起,避免了外界的干扰和不确定性。对象的某些数

15、据和代码可以是私有的,不能被外界访问,以此实现对数据和代码不同级别的访问权限。 4) 继承:继承是让某个类型的对象获得另一个类型的对象的特征。通过继承可以实现代码的重用:从已存在的类派生出的一个新类将自动具有原来那个类的特性,同时,它还可以拥有自己的新特性。 5) 多态:多态是指不同事物具有不同表现形式的能力。多态机制使具有不同内部结构的对象可以共享相同的外部接口,通过这种方式减少代码的复杂度。 6) 动态绑定:绑定指的是将一个过程调用与相应代码链接起来的行为。动态绑定是指与给定的过程调用相关联的代码只有在运行期才可知的一种绑定,它是多态实现的具体形式。 7) 消息传递:对象之间需要相互沟通,

16、沟通的途径就是对象之间收发信息。消息内容包括接收消息的对象的标识,需要调用的函数的标识,以及必要的信息。消息传递的概念使得对现实世界的描述更容易。8) 方法:方法(Method)是定义一个类可以做的,但不一定会去做的事。面向对象主要特征: 封装性:封装是一种信息隐蔽技术,它体现于类的说明,是对象的重要特性。封装使数据和加工该数据的方法(函数)封装为一个整体,以实现独立性很强的模块,使得用户只能见到对象的外特性(对象能接受哪些消息,具有那些处理能力),而对象的内特性(保存内部状态的私有数据和实现加工能力的算法)对用户是隐蔽的。封装的目的在于把对象的设计者和对象者的使用分开,使用者不必知晓行为实现

17、的细节,只须用设计者提供的消息来访问该对象。 继承性:继承性是子类自动共享父类之间数据和方法的机制。它由类的派生功能体现。一个类直接继承其它类的全部描述,同时可修改和扩充。继承具有传递性。继承分为单继承(一个子类只有一父类)和多重继承(一个类有多个父类)。类的对象是各自封闭的,如果没继承性机制,则类对象中数据、方法就会出现大量重复。继承不仅支持系统的可重用性,而且还促进系统的可扩充性。多态性:对象根据所接收的消息而做出动作。同一消息为不同的对象接受时可产生完全不同的行动,这种现象称为多态性。利用多态性用户可发送一个通用的信息,而将所有的实现细节都留给接受消息的对象自行决定,如是,同一消息即可调

18、用不同的方法。例如:Print消息被发送给一图或表时调用的打印方法与将同样的Print消息发送给一正文文件而调用的打印方法会完全不同。多态性的实现受到继承性的支持,利用类继承的层次关系,把具有通用功能的协议存放在类层次中尽可能高的地方,而将实现这一功能的不同方法置于较低层次,这样,在这些低层次上生成的对象就能给通用消息以不同的响应。在OOPL中可通过在派生类中重定义基类函数(定义为重载函数或虚函数)来实现多态性。 2.2.2 TCP/IP协议、UDP协议TCP/IP(Transmission Control Protocol/Internet Protocol)协议Internet最基本的协议

19、,是互联网络的基础。TCP/IP协议像其他网络协议一样,也是按层次划分的,第一层都有各自功能。TCP/IP协议共分为四层,包括应用层(FTP/Email)、传输层(TCP/UDP)、网络层(IP/ICMP/IGMP)和链路层(设备驱动程序与接口卡)。链路层:链路层有时也被称为数据链路层,通常包括操作系统中的设备驱动程序和计算机中对应的网络接口卡。他们一起处理与电缆(或其他任何传输媒介)的物理接口细节。网络层:网络层处理分组在网络中的活动,例如分组的选路。在TCP/IP协议族中,网络层协议包括IP协议(网际协议),ICMP协议(Internet互联网控制报文协议),以及IGMP协议(Intern

20、et组管理协议)。传输层:传输层主要为两台主机上的应用程序提供端到端的通信。在TCP/IP协议族中,有两个互不相同的传输协议:TCP(传输控制协议)和UDP(用户数据报协议)。TCP为两台主机提供高可靠性的数据通信。它所做的工作包括把应用程序交给它的数据分成合适的小块交给下面的网络层,确认接收到的分组,设置发送最后确认分组的超时时钟等。由于运输层提供了高可靠性的端到端的通信,因此应用层可以忽略所有这些细节。而另一方面,UDP则为应用层提供一种非常简单的服务。它只是把称作数据报的分组从一台主机发送到另一台主机,但并不保证该数据报能到达另一端。任何必需的可靠性必须由应用层来提供。应用层:应用层负责

21、处理特定应用程序的细节。 【面向连接的(TCP)连接过程】2.2.3 M F C(Micrososft Fundation Classes,即微软的基本类库)MFC是一个编程框架,MFC (Microsoft Foundation Class Library)中的各种类结合起来构成了一个应用程序框架,它的目的就是让程序员在此基础上来建立Windows下的应用程序,这是一种相对SDK来说更为简单的方法。因为总体上,MFC框架定义了应用程序的轮廓,并提供了用户接口的标准实现方法,程序员所要做的就是通过预定义的接口把具体应用程序特有的东西填入这个轮廓。Microsoft Visual C+提供了相应

22、的工具来完成这个工作:AppWizard可以用来生成初步的框架文件(代码和资源等);资源编辑器用于帮助直观地设计用户接口;ClassWizard用来协助添加代码到框架文件;最后,编译,则通过类库实现了应用程序特定的逻辑。为了支持对应用程序概念的封装,MFC内部必须作大量的工作。例如,为了实现消息映射机制,MFC编程框架必须要保证首先得到消息,然后按既定的方法进行处理。又如,为了实现对DLL编程的支持和多线程编程的支持,MFC内部使用了特别的处理方法,使用模块状态、线程状态等来管理一些重要信息。虽然,这些内部处理对程序员来说是透明的,但是,懂得和理解MFC内部机制有助于写出功能灵活而强大的程序。

23、总之,MFC封装了Win32 API,OLE API,ODBC API等底层函数的功能,并提供更高一层的接口,简化了Windows编程。同时,MFC支持对底层API的直接调用。MFC提供了一个Windows应用程序开发模式,对程序的控制主要是由MFC框架完成的,而且MFC也完成了大部分的功能,预定义或实现了许多事件和消息处理,等等。框架或者由其本身处理事件,不依赖程序员的代码;或者调用程序员的代码来处理应用程序特定的事件。MFC是C+类库,程序员就是通过使用、继承和扩展适当的类来实现特定的目的。例如,继承时,应用程序特定的事件由程序员的派生类来处理,不感兴趣的由基类处理。实现这种功能的基础是C

24、+对继承的支持,对虚拟函数的支持,以及MFC实现的消息映射机制。2.2.4 Windows Socket 编程Windows sockets无疑是我们进行网络编程的利器。所有的Windows Sockets实现都支持流套接口和数据报套接口。应用程序调用Windows Sockets的API实现相互之间的通讯。Socket接口是网络编程(通常是TCP/IP协议,也可以是其他协议)的API。最早的Socket接口是Berkeley接口,在Unxi操作系统中实现。WinSock也是一个基于Socket模型的API,在Microsoft Windows操作系统类中使用。它在Berkeley接口函数的基

25、础之上,还增加了基于消息驱动机制的Windows扩展函数。Winscok1.1只支持TCP/IP网络,WinSock2.0增加了对更多协议的支持。这里,讨论TCP/IP网络上的API。Socket接口包括三类函数:第一类是WinSock API包含的Berkeley socket函数。这类函数分两部分。第一部分是用于网络I/O的函数,如accept、Closesocket、connect、recv、recvfrom、Select、Send、Sendto。另一部分是不涉及网络I/O、在本地端完成的函数,如bind、getpeername、getsockname、getsocketopt、hton

26、l、htons、inet_addr、inet_nton、ioctlsocket、listen、ntohl、ntohs、setsocketopt、shutdow、socket等。第二类是检索有关域名、通信服务和协议等Internet信息的数据库函数,如gethostbyaddr、gethostbyname、gethostname、getprotolbyname、getprotolbynumber、getserverbyname、getservbyport。第三类是Berkekley socket例程的Windows专用的扩展函数,如gethostbyname对应的WSAAsynGetHostBy

27、Name(其他数据库函数除了gethostname都有异步版本),select对应的WSAAsynSelect,判断是否阻塞的函数WSAIsBlocking,得到上一次Windsock API错误信息的WSAGetLastError,等等。从另外一个角度,这些函数又可以分为两类,一是阻塞函数,一是非阻塞函数。所谓阻塞函数,是指其完成指定的任务之前不允许程序调用另一个函数,在Windows下还会阻塞本线程消息的发送。所谓非阻塞函数,是指操作启动之后,如果可以立即得到结果就返回结果,否则返回表示结果需要等待的错误信息,不等待任务完成函数就返回。首先,异步函数是非阻塞函数;其次,获取远地信息的数据库

28、函数是阻塞函数(因此,WinSock提供了其异步版本);在Berkeley socket函数部分中,不涉及网络I/O、本地端工作的函数是非阻塞函数;在Berkeley socket函数部分中,网络I/O的函数是可阻塞函数,也就是它们可以阻塞执行,也可以不阻塞执行。这些函数都使用了一个socket,如果它们使用的socket是阻塞的,则这些函数是阻塞函数;如果它们使用的socket是非阻塞的,则这些函数是非阻塞函数。Windows Sockets又利用下层的网络通讯协议功能和操作系统调用实现实际的通讯工作。它们之间的关系如下图所示:应用程序一应用程序二网络编程界面,例如Windows Socke

29、t等网络通讯协议服务界面,例如TCP/IP操作系统,例如Windows物理通讯介质 【Windows Sockets实现通讯工作的各层关系图】2.2.5 Client/Server结构(客户机/服务器模式)Client/Server结构(C/S结构)即客户机和服务器结构。C/S又称Client/Server或客户/服务器模式。服务器通常采用高性能的PC、工作站或小型机,并采用大型数据库系统,如ORACLE、SYBASE、informix或 SQL Server。客户端需要安装专用的客户端软件。它是软件系统体系结构,通过它可以充分利用两端硬件环境的优势,将任务合理分配到Client端和Serve

30、r端来实现,降低了系统的通讯开销。目前大多数应用软件系统都是Client/Server形式的两层结构,由于现在的软件应用系统正在向分布式的Web应用发展,Web和Client/Server 应用都可以进行同样的业务处理,应用不同的模块共享逻辑组件;因此,内部的和外部的用户都可以访问新的和现有的应用系统,通过现有应用系统中的逻辑可以扩展出新的应用系统。这也就是目前应用系统的发展方向。C/S结构的优点是能充分发挥客户端的处理能力,很多工作可以在客户端处理后再提交给服务器。对应的优点就是客户端响应速度快。缺点主要有以下几个:只适用于局域网。而随着互联网的飞速发展,移动办公和分布式办公越来越普及,这需

31、要我们的系统具有扩展性。这种方式远程访问需要专门的技术,同时要对系统进行专门的设计来处理分布式的数据。3 系统需求分析与设计开发3.1 系统需求分析在基于Socket的聊天系统,客户端和服务器必须保持随时随地的连接。这有别于普通Web浏览的连接方式。在使用浏览器访问服务器时,先由客户端发出HTTP协议,然后服务器响应处理这个客户端的响应,再返回处理结果;请求(Request)和响应(Response)是一种一对一的前后因果关系。而在基于Socket的聊天系统中,客户端发出聊天信息的同时,客户端也在接受服务器发送过来的其他人的聊天信息,因此,请求和响应不存在那种前后对应关系,是两种分别独立进行的

32、进程。因为服务器任何时候都可能发送信息到客户端,因此,客户端和服务器一旦建立连接,必须能让服务器在以后发送中寻找定位到这个连接。聊天系统在客户端和服务器之间主要传送的是文字信息,服务器端只需要把最近的文字信息推送到客户端,这样减少了网络传输内容,节省了网络传输的时间,无疑提高了聊天速度。这种“推”技术是目前基于Socket聊天系统的主要实现技术。该聊天程序分为服务器端和课户端两个部分。他们之间的关系图如下:ClientServerClientClientClient更新成员列表成员列表请求应答发送消息 【服务器与客户端之间关系图】3.2 系统设计3.2.1 设计原则考虑到系统的可重用性和伸缩性

33、,需要将本系统的网络通信底层和应用系统分离开。这样,基于可重用的网络通信层,可以实现其他各种实时性较高的应用系统。本系统在架构设计上将分4个层次,如下图所示。CAsyncSocketCSocket聊天、游戏等应用系统Window Sockets API 【架构层次】本系统最底层是Socket通信层,将负责客户端和服务器之间快速的数据交换,它通过接口层和最上面应用层保持实时数据联系。用户从客户端进入到本系统前,将实现统一的用户登录验证机制。Socket底层设计分两大部分:协议设计和连接处理设计:协议设计和连接处理设计;CSocket层的目的是提供底层和应用蹭一个中介媒体的作用,但是不能设计得太复

34、杂,以免延误数据传送时间。3.2.2 工作流程只有充分地了解了聊天程序的工作流程,才能对整个系统的理解更加深刻,聊天程序的工作流程如下图所示。加载套接字库初始化套接字绑定本地机到套接字向指定IP地址发送数据关闭套接字库结束聊天创建线程用于接受数据【聊天程序的工作流程】3.2.3 功能设计局域网聊天系统以局域网内的用户为应用对象,经过各方面需求分析,该系统主要由服务器端和客户端两部分构成,各功能模块如下图所示。局域网聊天系统服务器客户端开启服务器停止服务器配置服务器关闭服务器发送离线信息登陆文字传送接收离线信息用户管理【局域网聊天系统功能模块图】4 系统的实现 4.1 服务请求规范4.1.1 服

35、务器端(1) 创建一个UDP的套接字,接受来自客户端的广播请求,当请求报文内容为“REQUEST FOR IP ADDRESS AND SERVERPORT”时,接受请求,给客户端发送本服务器TCP聊天室的端口号。(2) 创建一个主要的TCP协议的套接字负责客户端TCP连接 ,处理它的连接请求事件。(3)在主要的TCP连接协议的套接字里面再创建TCP套接字保存到动态数组里,在主要的套接字接受请求后 ,就用这些套接字和客户端发送和接受数据。4.1.2 客户端(1) 当用户按“连接”按钮时,创建UDP协议套接字,给本地计算机发广播,广播内容为“REQUEST FOR IP ADDRESS AND

36、SERVERPORT”。(2)当收到服务器端的回应,收到服务器发来的端口号后,关闭UDP连接。根据服务器的IP地址和端口号重新创建TCP连接。故我思考:客户端一定要知道服务器的一个端口,我假设它知道服务器UDP服务的端口,通过发广播给服务器的UDP服务套接字,然后等待该套接字发回服务器TCP聊天室服务的端口号,IP地址用RECEIVEFROM也可以得到。4.2 主要模块的设计分析4.2.1 客户端模块 类模块如下: 主要函数说明:Class ClientSocket:Public CSocketBOOL CheckUserName(CString strUserName);/检查用户名是否重复

37、void CutMessage(CString strText);/把消息分离开处理void DelOnlineUser(CString strUserName);/删除一个在线用户void AddChatContent(CString strText);/往内容框添加记录void AddOnlineUser(CString strUserName);/增加一个用户void HandleMsg(CString strMsg);/根据标志位进行消息处理CWnd *m_pChatDlg;/指向窗口的指针,用于输出void SendUserName();/TCP;连接后第一次发送用户名void Se

38、ndToOne(CString strText);/把指定字符串发送给一个人(悄悄话”)void SendToAll(CString strText);/把制定字符串发送给所有在想用户void GetUserName();/从对话框获得用户名BOOL CreateTCPSocket();/创建TCP套接字并连接BOOL CreateUDPSocket();/创建UDP套接字并发广播客户端的数据处理模块:/消息处理函数/通信格式约定如下:/*/*(0 )用户名与服务器上的重复*/*STX+0+用户名+ETX*/*()首次传输在线用户名*/*STX+1+用户名+ETX*/*()传输新到用户名*/*

39、STX+2+用户名+ETX*/*()传输离线用户名*/*STX+3+用户名+ETX*/*()传输聊天数据*/*STX+4+内容+ETX*/*/void CClientSocket:HandleMsg(CString strMsg)CString strTmp;switch(strMsg.GetAt(1)case 0:/用户名已存在strMsg = strMsg.Mid(2, strMsg.GetLength()-3);/删掉头尾控制位strMsg += 用户名已存在,请尝试用另外的用户名登陆!rn+GetTime();AddChatContent(strMsg);/用户名已存在GetUserN

40、ame();/重新获取用户名SendUserName();/重新发送用户名break;case 1:/首次传输在线用户名strMsg = strMsg.Mid(2, strMsg.GetLength()-3);AddOnlineUser(strMsg);/用户名增加到在线列表框break;case 2:/传输新到用户名strMsg = strMsg.Mid(2, strMsg.GetLength()-3);AddOnlineUser(strMsg);/增加到在线列表框strTmp = strMsg + t来了。t + GetTime();AddChatContent(strTmp);/新用户名

41、加入聊天内容break;case 3:/传输离开用户名strMsg = strMsg.Mid(2, strMsg.GetLength()-3);DelOnlineUser(strMsg);/在线列表删除相应用户名strTmp = strMsg + t离开了。t + GetTime();AddChatContent(strTmp);/聊天内容显示用户离开break;case 4:/传输聊天内容,直接显示strTmp = strMsg.Mid(2, strMsg.GetLength()-3);strTmp += GetTime();/消息末尾加上时间,直接显示AddChatContent(strT

42、mp);break;4.2.2 服务器端类结构主要类:CChatServerDlg,负责响应窗口输入输出CServerSocket,服务器的主服务套接字类型,负责监听客户端的TCP连接请求,并控制整个聊天室的总体数据接收与发送CClientSocket,它的对象定义在CServerSocket里,定义为动态数组对象,负责主服务套接字Accept后,由它来和客户端通信。CUDPSocket,一直开启,负责客户端一开的UDP连接请求,给客户端发送服务的端口号。CPortInput,输入端口号对话框。4.3 系统运行效果4.3.1 服务器端效果图【服务器端效果图】4.3.2 客户端效果图【客户端效果

43、图】4.4 系统测试4.4.1 测试意义本章对我们的系统做具体的测试,验证系统的功能是否得以实现。【服务器端代码测试】【客户端代码测试】4.4.2 软件测试的目标(1)测试是为了发现程序中的错误而执行的程序的过程;(2)好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案;(3)成功的测试时发现了至今为止尚未发现的错误的测试。从上述规则可以看出,测试的正确定义是“为了发现程序中的错误而执行程序的过程”。正确认识测试是非常重要的,测试目标决定了测试方案的设计。没有发现错误的测试也是有价值的,完整的测试是评定测试质量的一种方法。4.4.3 软件测试的方法软件的测试分为两种:黑盒测试和白盒测试。

44、黑盒测试:黑盒测试也称功能测试,它是通过测试来检测每个功能是否都能正常使用。在测试地,把程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,在程序接口进行测试。它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出信息。黑盒测试着眼于程序外部结构,不考虑内部逻辑结构,主要针对软件界面和软件功能进行测试。白盒测试:软件的白盒测试是对软件的过程性细节做细致的检查。这种方法是把测试对象看做一个打开的盒子,它允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试。通过在不同点检查程序状态,确定实际状

45、态是否与预期的状态一致。因此白盒测试又称为结构测试或逻辑驱动测试。白盒测试主要是想对程序模块进行如下检查:1、对程序模块的所有独立的执行路径至少测试一遍。2、对所有的逻辑判定,取“真”与取“假”的两种情况都能至少测一遍。3、在循环的边界和运行的界限内执行循环体。4、测试内部数据结构的有效性,等等。测试用例如下表:功能描述用户登录用例目的测试用户登录功能是否正常前提条件客户端程序和服务器端程序处于运行状态输入/动作期望的输出/相应实际情况示例1:输入正确的用户名、服务器IP和端口号用户成功登陆,关闭登陆窗体,弹出客户端主界面与期望输出相同示例2:不输入用户名、输入服务器IP和端口号无法登陆服务器与期望输出相同示例3:输入正确的用户名,输入错误服务器IP和端口号用户登陆失败,连接服务器失败与期望输出相同示例4:输入错误的用户名,输入正确服务器IP和端口号用户登录失败,用户名输入错误与期望输出相同总结经过3个月紧张的毕业设计,网络实时聊天软件已基本完成,系统基本功能已经实现,测试运行也完全正常。在毕业设计的初期,我主要学习了与本课题相关的理论知识,包括:VC+的

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

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


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号