基于CS架构的网络聊天室设计与实现(共52页).docx

上传人:飞****2 文档编号:13890105 上传时间:2022-05-01 格式:DOCX 页数:52 大小:1.41MB
返回 下载 相关 举报
基于CS架构的网络聊天室设计与实现(共52页).docx_第1页
第1页 / 共52页
基于CS架构的网络聊天室设计与实现(共52页).docx_第2页
第2页 / 共52页
点击查看更多>>
资源描述

《基于CS架构的网络聊天室设计与实现(共52页).docx》由会员分享,可在线阅读,更多相关《基于CS架构的网络聊天室设计与实现(共52页).docx(52页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、精选优质文档-倾情为你奉上课题:基于C/S架构的网络聊天室设计与实现院 (系): 计算机工程系 专 业: 计算机科学与技术(软件工程)班 级: 学生姓名: 学 号: 指导教师: 2014年 05月10日专心-专注-专业摘要互联网聊天服务系统与传统的电子邮件和电话交谈相比,是更有效的,实时的和快速的。随着计算机科学与技术和Internet (互联网)的飞速发展, 各种网络聊天工具已成为人们相互学习交流沟通的一种方式。这个程序采用软件工程的开发方法,结合使用了网络技术、以及程序设计技术,并使用Visual C+ 6.0作为开发工具,使用TCP / IP协议下的一个套接字连接局域网聊天室的开发。这个

2、网聊天室采用传统的客户端与服务器(C/S)架构和TCP连接方法实现的,它是由客户(C)端和服务器(S)这两个模块组成的一个系统。聊天室的服务器模块的作用主要是用来维护网络上与用户的信息有关的服务,如用户的登录,消息的转发,用户的信息,用户退出等,聊天室的客户端模块主要包括用户的注册、登录、发送私聊信息、群发消息、接收别人的信息、在线用户列表等。使用结构化的方法编译整个工程,逐步完善整个系统的各个功能。系统采用套接口(CSocket)实现客户端与服务器的链接。这个聊天室系统不仅提供基本的聊天功能,还添加了一些使用的功能,比如注册用户、验证登陆、发送文件和私聊等。聊天室系统通过测试其操作简单并且灵

3、活性好而且运行稳定。关键词语:MFC;套接字;TCP通信;聊天室; ABSTRACTNetwork chat service system compared with the traditional E-mail and telephone, chat is the more efficient, real-time with effective. With the quickly development of the computer science and the technology and the rapid development of the Internet (Internet)

4、, all kinds of network chat tool has become a way of people to learn from each other communication. This program USES the development method of software engineering, jion with the network programming technology, and technology, using Microsoft Visual c + + 6.0 as developmenting instrument, using the

5、 TCP/IP protocol under a socket connection for the development of LAN chat room.The network chat room USES traditional client and server (C/S) architecture and TCP connection method, it is by the customer (C) the client and server (S) of the two modules of a system. The role of the chat room server

6、module is mainly used to maintain the network with the users information services, such as user login, the forwarding of a message, the users information, the user exit, such as chat room client module mainly includes the user register, login, private chat messages, mass message, receive other peopl

7、es information, such as online user list. Structured method is used to compile the whole project, the various functions of the whole system to consummate gradually.System USES set of interface of the client and the server (CSocket links. This chat room system not only provides the basic chat functio

8、nality, Also added like something functions, such as user registration, verify and send the file and private chat, etc. Chat room system by testing its easy operation and good flexibility and stable running.Key word : MFC and The socket and TCP communications and Chat rooms;目 录第一章绪论如今的科技使网络技术越来越发达,人

9、们使用网络也越来越频繁,从而使人们对网络的依赖不断的上升,出现了越来越离不开网络网络的情况,因此产生的聊天工具软件也玲琅满目,比如如,国外的MSN、ICQ,国内的YY语音和腾讯公司开发的微信与QQ等。由于VC+网络编程技术的功能非常强大,所以我的毕业设计选择使用VC+6.0为开发平台开发一个聊天系统软件。这个系统建立在微软的VC+6.0平台上,设计系统时不仅使用了C+的面向对象设计技术的(OOD)而且还面向对象的编程(OOP)原则。这个系统采用传统的客户端/服务器(C/S)结构模型来进行开发,并且客户端和服务器、客户端和客户端之间的通信通过套接口(CSocket)进行的。使用C/C+语言开发,

10、采用的开发工具为微软的VC+6.0。第一节论文的目的和意义最近这写年来以来,随着全球信息技术在不断的飞速发展当中,并且互联网同时也处于快速发展之中。出于经济、快速、有效地处理各种各样的问题,使用局域网已成为很多企业的优先选择。在局域网这个平台的帮助下,使企业的信息化流程越来越简单了,而且人与人之间的信息交互加快了,从而提高了每个员工的工作效率。但是随着各个企业规模的不断发展并扩大,业务量也跟着不断的处于上升阶段,从而造成企业内部信息越来越机密越来越贵重,一旦泄露将造成不可估量的损失,从而使企业只让员工通过使用局域网进行工作的沟通、交流与学习,从而达到避免企业内部商业秘密通过互联网这个网络(In

11、ternet)流入到竞争对手或者商业间谍那里去,造成不必要的损失。为了解决企业与互联网之间的矛盾,各个企业提出了开发只能在公司里面使用的聊天软件的构想,通过开发局域网聊天软件能达到企业的目的,使用局域网聊天软件企业员工不仅可以随时的发送和接收即时消息,而且还可以使用局域网召开会议进行网络交流等,不仅可以提高企业员工的效率同时又对企业的内部信息进行了保密工作措施,从而最大化避免商业信息泄露。随着市场经济的不断发展,用户对软件的功能需求也越来越高,需求量也越来越大,从而促进了即时通讯的网络产品也不断地进行换代更新,像浪花一样一波又一波的向前推进。网络即时通讯软件不论是在它的基础应用聊天这方面还是在

12、扩展应用方面的文件发送语音聊天方面的发展都有着很大的进步。为了各种使用人群的需求,包括移动公司的聊天软件飞信在内得各种即时通讯软件,这些软件呢都推出了包括视频聊天、语音聊天的功能模块方便大家交流。我的这个课题是基于局域网聊天软件,用C/C+编写的应用程序,程序完成基本的文字聊天模块,可作为一个简单局域网聊天工具。这个统采用了基于网络编程技术套接口(CSocket)的方法开发并实现了基于局域网聊天的功能,基于局域网软件通信产品很多都是使用套接口(CSocket)实现的,这种软件产品在局域网中使用可以有效的为企业提供一种实时,安全,优良,的信息传递机制。实现它的功能难度不是很大并且不必要对企业局域

13、网硬件做任何的更新或改动从而为企业减少了很多麻烦,并且这个软件具有实现低成本的优势和条件,它的使用不尽能有效地降低局域网消息传递的负载量而且传递速度快,从而能提高局域网使用的效率,可以很好完成企业对于局域网通信的需求,使企业很好的进行日常事务的处理,进而提高企业工作效率。 基于套接口(CSocket)的局域网聊天软件很好地解释了套接口(CSocket)信息传递的原则,并且在企业的实际应用中都具有很高的价值。局域网聊天软件的信息发送和接收的速度,带宽低,安全性好,服务器容量较低,易于编程等优点。基于套接口(CSocket)的局域网通信软件使用的人群非常广,即可以处理一般的文字通信,又能扩展使其适

14、应新兴的网络应用软件,如影音数据传输网络教育等,这些应用都有广泛的前景。 局域网的即时信息传递软件大多数都是采用UDP或者 TCP协议来完成信息传递的,这项技术已经非常成熟。UDP是一种实时的通信协议,但是传输的数据是不可靠的,可能又会数据的丢失,TCP是一种可靠的通信协议,数据传递是有链接的可靠的。我的这个课题就是采用TCP通信协议完成的一个局域网聊天室的软件程序。第二节国内外研究现状当今世界范围内各种聊天室系统软件的公司很多,产品也各种各种各具特色,不过大体都已聊天为中心扩展其他功能,在我们国家有YY、QQ、网易泡泡、新浪UC、默默等产品,国外的有ICQ、Skype、MSN、Faceboo

15、k等。在这里我主要取用户最多的两个产品进行研究,国内的为腾讯公司的QQ,国外的为微软MSN,作为开发即时通讯软件的系统的一个模板。QQ作为国内即通信软件其市场占有率一直无人人能及,自腾讯公司1999年闯入即时通讯领域之后,它迅速占领了国内市场,并且使国内用户一直都是处于最多的状态,没有一丝一毫的动摇迹象。虽然这几年微软的MSN在我国有发展壮大的趋势,但是腾讯QQ的用户量依然在逐步增长中。腾讯的即时通讯软件产品的成功是来源于它对QQ这个通信软件的不断更新不断完善从而使QQ一直被使用者称好,这也算QQ这款软件成功的基本原因。通过阅读许多网络上的书籍,以及自己使用MSN、QQ、YY等通讯软件。可以肯

16、定的是腾讯的QQ微软的MSN等都是多个服务器同时服务,服务器控制客户端与客户端之间使用UDP协议进行通信。在两个客户端之间不能建立正常连接的情况下腾讯QQ使用用服务器进行消息的中转以达到通信的目的。图1.1 是我们经常使用的QQ聊天软件的客户端-服务器模MSN与腾讯QQ不同的是他们使用协议的不同,微软的MSN是使用TCP协议作为传输层通信协议,而QQ使用的UDP作为传输层得通信协议,服务器与所有的登陆在线客户端进行链接,并通过服务器进行消息的中转实现客户端与客户端之间的消息传递。图1.2 微软的MSN客户端-服务器模型从腾讯QQ的系统模型中我们可以观察到的是,服务器的作用是处理客户端的传递过来

17、的各种状态的请求并进行相应的处理响应,从而达到服务器的压力将到最小值,但是它还是存在着一些缺点,就是服务器客户端之间的的协议和功能实现都比较复杂。然而微软的MSN一切数据都要进过服务器中转,由此可知道服务器承受的压力是多么的大(所以平时使用MSN进行语音视屏聊天很少)。上面的软件都实现了在互联网上的即时信息传递,在使用方面都具有自己独特的一面,软件的开发方式也各不相同,但中心思想一致。伴随着社会的发展企业的扩大,营业额的上涨,各个企业的竞争也越来越激烈,所以企业内的商业信息也越来越机密,为了保护商业机密企业只希望员工通过局域网进行工作的商讨交流与资源的共享,从而避免企业内部商业秘密通过互联网(

18、Internet)泄露到竞争对手手里,从而使局域网的聊天软件也隐藏着很大的用户市场资源。第三节 论文的主要内容这个课题主要研究的主要方向是使用C/C+语言进行的局域网聊天室软件的开发,该聊天室软件开发过程中采用的是精典客户端/服务器架构和TCP协议的有链接连接方法,完成用户在客户端与客户端间传递文字信息功能。完成它的功能实现必须要两个程序:一个是用于消息转发的服务器端程序和另一个是用户间交流的客户端程序,调试程序时首先必须要启动服务器等待客户端消息的请求做,服务器需要一个固定的端口号和一个固定的IP地址使客户端能连接到固定IP地址的服务器并向固定端口发送消息,当客户端与服务器链接时,用户需要注

19、册一个用户名,但是如果用户名已经被其他已经登录过的客户端注册,服务器就会发送信息告诉客户端用户已存在,要求重新注册。当用户注册成功后可以使用账户进行登录,登陆之后客户端之间可以通过发送文字信息进行聊天或信息交互。服务器模块主要是显示用户信息消息的转发,和用户登录退出的提示;客户端的模块主要是文字消息的发送和接收达到聊天的目的,还有文件的发送和接收,在线用户列表的头像和名字显示,老用户的登录和新账户的注册。研究这个课题的前提的必须有一定的C/C+语言基础,并熟练运用VC+6.0开发平台,利用套接口(socket)网络编程技术并且结合TCP网络协议进行这个局域网聊天软件开发工作。在这里我选择TCP

20、协议却没有选UDP协议是为了保证可靠的信息传递,TCP与同于UDP协议不同的是,TCP协议往往要求在进行可靠连接后才进行信息的传递。第一章主要论述了论文的目的和意义,展示了主要的内容和简单的介绍。第二章主要说明了聊天系统在国内外的发展具体状况,和主流的及时通信软件产品,并且将国内外使用最多MSN聊天软件和国内使用最多QQ都做了简单的介绍并进行了一些简单的对比,以加深我们对及时通信软件的认识。第三章主要说明了这个软件所需要到的软件开发语言极其使用平台,和简单描述了套接字(CSocket)的发展历程。第四章介绍了整个系统的设计和和各个模块的作用极其功能。第五章详细分析了如何实现各个功能极其作用。第

21、六章对设计过程中可能出现的问题进行可行性分析与总结,分析了整个软件的优点和缺点,并对日后软件的完善埋下了伏笔。 第二章 开发环境及编程语言的介绍第一节 Visual C+6.0可视化开发环境Microsoft Visual C+ 6.0是一款可视化编程工具它是微软出品的,它使用的范围非常广阔。Microsoft Visual C+ 6.0这个软件开发平台是由很多部分组成的,它包含一个项目生成工具和一个增量连接器和文本编辑器和资源编辑器和一套在线文档和源代码浏览器,以及集成的调试工具。使用Microsoft Visual C+ 6.0这个开发平台,可以对程序进行各种繁杂的操作,例如程序新建,删除

22、,修改,编译,调试,运行等。Microsoft Visual C+ 6.0开发平台采用传统的多窗口多任务Windows用户界面方便大家学习使用这个平台,也降低了平台使用的复杂度,不仅这样Microsoft Visual C+ 6.0开发平台还添加了一些独特的个性化的特征使用方式,从而使开发环境简单易用方便,是我们很快就能学会并且熟练运用。基于Microsoft Visual C+ 6.0的原始身份是一个可视化编程的软件开发平台,在介绍Microsoft Visual C+ 6.0的每一个不可或缺部分之初,大家应当了解一下可视化编程是一个怎么样的过程。可视化编程技术是目前IT界发展最快并且最引人

23、眼球的,它吸引人的地方表现在它能把一些抽象的东西用图像、图形的方式展现给大家。它的应用之一可视化编程。我们所将的可视化编程,指的是程序员在开发软件的时候,用我们肉眼可以观察到的具有一定特殊意义的图形,图标,按钮来替换以前我们手动的制作、浏览、运行这些繁杂的操作,使我们从繁重的软件开发表现出来给大家的映像就是按钮的拖拽图形化对象的设置,鼠标的点击以及特定对象的表现出特定属性以及行为的过程和方法,使其体现出可视化编程的最大优点易学易用,效率高。第二节 网络编程20世纪80年代初期,美利坚政府下的高级工程研究机构颁给加利福尼亚大学BERKELEY分校一比研究经费,目的是让加利福尼亚大学研究出在LIN

24、UX/UNIX操作系统完成TCP/IP协议的消息传输机制。在这个项目中研究人员通过很长一段时间的艰苦钻研为网络通信TCP/IP网络传输协议开发了一个可行的应用程序接口(API)。并将这个应用程程接口,叫做套接字。直到现在,在网络传输软件的开发中套接字(Socket接口)依然是TCP/IP网络传输协议中运用最简单使用最频繁的API(应用程序接口),也是互联网(Internet)软件应用开发过程中最为常见的API接口。单词 socket翻译为中文为套接字, 对于每一个程序员来说, Socket也可以看成是一个类似于文件指针的指针,只要指向指针所指的地址读写数据,那么他就可以说是实现了双向通信。基于

25、这个特套接字是网络通信编程运用中的必不可或缺的一部分。Socket套接字是一个网络互连终点的同时并且可以是被寻址和被命名的网络通信端点,从而看出套接字的作用是多么重要。用另一句话说,网路互联就是两台不一样的电脑或处理器通过网络相互传递数据的链接过程。每一个网络会话过程中的通信末端都被网络专业人员叫做网络通信节点。若使用套接字进行网络接口相互链接,那么每个程序在网络链接的末端都都要提供一个套接字作为接口,套接字接口类似于我们平常看见文件系统一样,可以通过 API接口函数在网络中申请一个特定套接字句柄来标记套接字的属性。虽然说套接口类似与文件系统,但是套接字句柄与文件句柄的意义是不相同的,文件句柄

26、它指向的是一个固定的设备和文件, 然而套接字句柄并不是像我们想的那样代表的是一个目标地址或一个特定的终点。套接字程序的操作顺序是,首先申请一个套接口,其次将目标的终点和套接字连接起来实现通信。套接字函数的实现是底层的WinInetAPI函数的其中很重要的一部分,如果使用的是Microsoft Visual C+ 6.0类库MFC里面的 CSocket类的话,MFC里面把套接字底层运用函数封装起来了构成一个类方便了我们调用。CSocket来源于 CAsyncSocket类,它是CAsyncSocket类的子类,由于使用CAsyncSocket类的编程运用到很多底层函数所以使用比较难,它进行通信操

27、作需要编写底层函数这样的操作无疑是大大提高编程的可行性的行为,但是CSocket更抽象的封装底层函数,代替编程者操作难度较大的底层函数,使套接字编程得到简化。但是又应为其实CSocket类还支持了一个更加高级的,使用简单的Socket运用方法,它熟练的通过运用MFC类库中序列化类的方法并运用完成对Socket对象进行提供和传输。使用Socket进行的网络编程实现即时通讯方式有两种方法。一种是需要建立可靠的虚拟连接的形式叫面向连接方式或者流方式。基于这个链接方式,就是两个需要进行通信的程序在通信之前一定要先进行建立一个虚拟的网络连接环境。它的过程就像我们平时打电话,你拨打我的手机只有我点接听了,

28、我才能接收到你在那边说话传过来信息,这样的有连接的通信叫做TCP通信协议。另一种方式叫数据报文 ,也可以称为没有连接方式 ,这种通信就像我们平时寄信那样把信息写在纸上然后寄出去,应为寄信要通过不同的邮局不同的邮递员所以在信得传递过程中很可能丢失或残缺不全,但是有时候后面寄出去的信件要寄到同一地点也会先一步到达,它使用的通信协议对应为UDP通信协议。流方式数据传输特点是可靠的数据传输,对发送的数据总是进行校验,对出错的数据进行重发,一般用于对出错要求比较高的或者说不允许发送错误的数据传输如 telnet、ftp、文件等;数据报文方式应为没有进行校检和数据重发,所以其通信效率一般比较高,一般用于对

29、数据发送完整性不是很高的网络应用 ,例如语音的传输,文字的传输等。因为两个客户端之间的通信是使用客户机/服务器的机制,为了数据传输的可靠性,所以采用了基于TCP协议的套接字编程来开发。第三节 客户端/服务器模式需要进行通信的两个客户端之间的相互联系的模式是客户机/服务器模式,相当于客户端给服务器发送消息,服务器接收到消息后进行数据分析,然后给客户端提供相应的服务。由于是不同程序之间进行的通信属于网间进程通信是异步的而非同步的,进行通信的程序之间不纯在相互依赖的父子关系,也没有共享相同的内存区间,此时就需要一种通信机制为两个进程建立联系从而实现数据的同步交换,以实现进程间的通信。服务器/客户机传

30、统的网络应用模式在实际使用过程中使用的方法是主动请求的服务模式:即服务器要最先启动并且处于一直等待客户端的服务请求状态,并根据接收到的客户端请求作出相应的服务和应答:1) 建立通信通道,并打开通道绑定本地主机IP,并告诉主机愿意在主机IP地址上接收客户服务;2) 一直等待客户端的发送过来的服务请求到达特定IP地址下的服务器特定端口上,除非服务器关闭或出错;3) 根据接收到的服务请求信息,判断客户端需要做怎么样的服务,发送出服务信号作出相应服务,服务完成后关闭连接停止通信;4) 回到第二步继续等待下一个服务;5) 服务器关闭则通信中断。客户端:1) 建立一个可用的通信线路套接口,并连接到固定主机

31、的固定IP地址和固定端口号的服务器上,才能进行通信; 2) 通信连接步骤完成后根据自己的需要向服务器发送服务请求,并等待服务器处理接收到到消息进行相应的服务;3) 接收到服务器应答后关闭通信通道完成通信。由以上我们知道:1) 服务器与客户端是不一样的,服务器是等待连接,客户端是请求连接,因此在编程实现上必然存在很大差别;2) 由于服务进程是给客户进程服务的所以服务进程必须先于客户进程启动并一直存在等待客户端服务消息,因此只要系统处于运行状态,服务进程必须处于运行状态,直到人为的关闭服务器,或者是因其他原因服务器被强制关闭。客户端服务器通信的原理图如3所示。客户端服务器建立服务端监听等待并接受连

32、接创建连接套接字发送消息Send接受消息Receive关闭套接字Close向服务端发送连接请求 Connect发送消息Send接受消息Receive关闭套接字Close图2.1 系统实现原理图客户端/服务器实现通信我们可以将它简单的分为三个阶段:一、数据连接套接口的建立。二、数据的传输,客户端向服务器传输服务请求,服务器处理消息并把处理结果传输给客户端。三、解除客户端与服务器之间的连接。在套接字建立的通信的整个过程之间,将用到很多的函数处理不同的消息我们经常用到的函数如下:(1) AfxSocketInit():在这个函数AfxSocketInit()之中 包装了函数 WSAStartup()

33、,通过在应用程序的初始化的功能函数IninInstance()之中我们可以通过调用AfxSocketInit()对相应的变量进行初始化。(2) Create(): 其主要作用是创建套接字,创建套接字可分为本地的和网络的,TCP或UDP的套接字。(3) Listen():这个函数创建一个并Socket并为其中申请进入的连接套接口建立一个后备日志报表,方便后期的管理。(4) Connect(): 这个函数主要运用于客户端服务程序的开发,用于向服务器端发送客户端的连接请求,完成连接。(5) Accept():这个函数主要用于服务器端,用于服务器端得套接字监听,客户端的连接请求,如果连接成功返回新的套

34、接字描述符与客户端通信。(6) Send():这个函数主要是用于消息的发送,客户端或者服务器都可以使用,是网络通信中用于发送消息的最常用函数之一。(7)Recv ():这个函数主要用于接收消息,运用于TCP连接的网络通信的服务器客户端接收send函数发送来的消息。(8) Close(): 关闭套接字描述符,使描述符不可用。在一个以MFC实现的Socket通信过程中,里面纯在着很多的消息映射机制,当某一消息发送时,应用程序窗口就会收到一些特定的消息,从而自动调用响应函数,在函数中我们可以运用自己的代码以更好的完成整个通信过程,其中常见的函数如下:(1) OnAccept():如果服务器的sock

35、et处于监听状态之中,当有客户申请连接的时候,OnAccept函数会被运用程序调用,你可以在函数里面添加自己的代码根据程序的需求完成相应的功能。(2) OnConnect():当客户端的套接字向服务器申请链接之后 ,程序就会调用OnConnect()函数,我们可以正在这个函数内添加代码根据需求完成相应功能。(3) OnSend(): 运用程序调用这个消息函数通知套接字现在可以使用send()函数来进行信息的交互。(4) OnReceive():运用程序调用这个消息函数通知套接字现在可以使用Recv()函数来进行接收消息。(5) OnCloes():这个函数主要是在关闭套接字时触发的用于告诉程序

36、套接字已经关闭。第三章 需求分析由于该课题已经有很多现成的系统,由此可以断定系统开发具有一定的可行性。因此,限于篇幅的原因不对系统实现的可行性进行叙述。需求分析是软件开发中的非常重要的一步,我们在做需求分析的时候应当尽可能做到通俗、简单、详细。第一节 需求界定课题是开发一个满足用户基本需求的局域网聊天室系统。因此需要实现如下最基本的需求。对服务器端和客户端两个应用程序进行开发,调试工作以达到以下目的。(1)客户端可以与服务器进行连接(2)客户端与服务器端连接成功后可以与其他客户端进行中转通信(3)服务器端可以接收到连接信息并根据发来的信息做出反应(4)客户端之间除了可以在聊天室发送消息外,还可

37、以进行私聊(5)客户端之间可以向聊天室发送文件,其他客户端可以接受文件并保存根据上面的分析,开发的聊天室应用程序要完成的功能概况起来包括,登录功能、验证用户名和密码的功能、聊天室内聊天功能、私聊功能、发送文件功能和接收文件并保存功能。在设计开发这个即时通讯软件聊天系统的过程之中,要考虑到的两个设计要点如下:首先,程序需要运行于TCP/IP环境上,需要完成客户端和服务器端这两个运用程序的开发。然后,为了使用套接字消息函数我们应当从CSocket派生出适合自己使用的套接字类,很多时候为了方便大家阅读程序将监听套接字和连接套接字分开,从而又派生出了监听套接字类和用户套接字类供程序使用。然后利用这些派

38、生类进行我们的程序开发。第二节 功能界定一、简单的系统模块图根据上面的分析可以画出程序的初步的模块功能模块图如图四所示。图3.1 系统需求分析功能模块图整个程序组成一个聊天室,聊天室可以分为两个程序,一个是客户端程序,另一个服务器端程序,客户端程序的基本功能是:用户的登陆,和用户的注册、大家都可以看到的消息群发功能、一对一的私聊功能,和文件发送模块。服务器端主要功能是: 登录验证、注册验证、和各种消息的转发、用户成功登陆后的提示信息。这就是这个系统简单的功能模块分析。二、流程图图3.2 系统流程以上为整个系统的流程图,系统的运行必须启动两个程序,首先要启动的是服务器,然后启动客户端,客户端连接

39、服务器,向服务器发送各种请求,服务器分析客户端发送的过来的请求,分析请求作出相应的服务,服务器就相当于一个消息的中转站。三、用户数据模型(E-R图)密码IP头像账号用户图3.3用户数据模型图每个用户的基本息都包含(账号,密码,头像,IP),是每个客户端登陆的必备条件。第三节网络聊天室的主要实现一、登陆以及身份确定的功能实现用户在登陆界面输入用户的用户名和密码,然后系统对登录名和密码进行验证如果通过验证这进入用户聊天界面,如果没有录名和密码通过验证,系统就会显示下列错误的信息:您输入的密码,或账号错误,请确认正确的账号密码后重新输入。图3.4用户数据模型图用户登陆界面的设计:采用文本框填写用户名

40、和密码,采用IP Address控件输入服务器IP,并使用Extend Combo Box控件选择头像以及还包括了登陆、取消、注册按钮。其中服务器默认显示IP为主机的虚拟IP地址127.0.0.1,系统如何实现默认显示IP的方法,将IP Address控件绑定一个相对应的CString变量,然后给这个变量赋值为127.0.0.1的一个字符串,然后利用系统功能UpdateData(false)函数的方法把变量的值更新到与变量相关联的IP Address控件上,完成默认IP的显示。界面上有三个按钮(1)、取消这个一个MFC的取消按钮,没有进行任何的重写,作用为推出登陆界面。(2)、注册作用是:弹出

41、注册界面注册页面中可以输入用户名、密码、年龄。注册的功能的完成是这样进行的,填写好注册页面里的文本框空间以后后调用系统函数UpdateData(TRUE);使相应控件的相应变量获取相应的值,然后利用套接字的消息传递将用户名、密码、年龄传递给服务器,服务器验证传过来的用户名是否已经注册,如果没有注册则服务器向注册页面发送注册成功标志LOGIN_SUCCESS,注册页面接收到此消息后利用MESSAGEBOX函数弹出注册成功,否则注册失败,重新输入。在这里面我们使用的winsocket套接字的原理图如下:图3.5winsocket套接字的原理图Winsocket套接字的使用,有图大家可以看到要使用套

42、接字进行网络通信,两个程序都必须要申请一个套接字,服务器的套接字主要用于监听,接受客户端的连接申请,客户端的套接字要用于申请连接服务器,TCP的网络连接,客户端服务器都是使用send()/recv()进行数据交换,通信结束后关闭套接字。(3)、登陆 把用户名,密码和年龄利用Socket发送服务器,服务器验证传递过来的信息,如果用户不存在或密码错误,则登陆失败,否则登陆成功,服务器给登陆界面发送一个登陆成功消息LOGIN_SUCCESS。二、客户端聊天功能的实现用户聊天界面是这样的标题显示的用户名,接下来的文本框显示的是用户的聊天信息,以及用户进入聊天室和退出聊天室的提示信息,接下来的文本框是用

43、来输入聊天信息的右边的列表框是用来显示用户头像和用户名的,双击用户头像获取用户信息,调用UpdateData(false)使单选框打钩发送私聊消息,接下来有一个文本框和一个按钮,按钮的作用是点击按钮选择要发送的文件名,通过CFile类成员变量对应的文件路径和文件名通过调用函数将文件路径分配到一个文本框绑定的变量是在文本框中显示。在文件的最底端有4个按钮分别是发送文件按钮、发送聊天消息按钮、接收文件按钮,关闭聊天页面按钮。三、开发环境与技术本系统使用C/C+作为开发语言,使用比较经典的比较简单的微软的Visual C+ 6.0作为开发环境进行开发。开发过程使用原型模型,即首先开发一个比较粗糙的原

44、型系统然后在基础之上不断的修正。该系统用到数据库的地方使用ACCESS数据库,采用socket技术,发送消息时进行TCP连接。更为详细的开发环境与技术的选择如表3.1所示。表 3.1程序开发环境与技术参数选择技术开发语言C+开发平台Microsoft Visual C+ 6.0 平台软件开发模型原型模型开发技术MFC数据库ACCESS连接方式TCP测试平台Windows 7 Profession(一) ODBC编程技术在程序开发过程中还运用到了MFC的ODBD编程技术,其中技术特点如下通过Microsoft Visual C+ 6.0中类库MFC 通过使用ODBC访问数据库做一个简单讲解,程序

45、员在软件的编写过程中要用到很多C/C+的技术,可以根据不同的需求使用相应的方法解决问题,以到达缩减开发周期,减少工作量的目的,提高了效率和软件的可靠性。MFC的ODBC类对于一些比较复杂的ODBC API使用类进行了封装,并提供了一些简化的调用的功能接口函数,从而很大程度上提高了数据库应用程序的开发速率。使开发人员可以不必了解ODBC API接口函数和SQL编程的具体细节,利用已经封装好的ODBC类已经足够完成对数据库的的很多操作需求。MFC的ODBC类主要包括:CDatabase类:这个类主要是完成运用程序与数据源的连接,为接下来的数据库操作做准备。CRecordset类:这个类是表示数据库

46、的一组数据可以成为一个记录集,一个记录集可以记录一个数据表中的所有数据,记录集得获取主要使用的是查询(select)获得,也可以通过多表查询得到多个表的相关联的记录集,记录集中的数据可以通过游标进行遍历,也可以通过SQL语句进行相应的删除,修改,插入等操作。CRecordView类:主要作用是为表单视图和记录集提供了一个直接相连的方法,利用数据交换机制把记录集里面的数据显示到表单数据的控件之上显示出来。方便用户对数据集的浏览插入删除和更新,在关闭空间时关闭记录集。CFieldExchange类:主要用于记录集中的字段进行互换,就是将数据库表中的指端与相应的记录集中的数据成员进行数据交换。并且属于CDataExchange类功能的数据交换。CDBException类:这个类主要是说明ODBC类在使用过程中发生错误或异常。根据以上内容我们总结出,CDatabase针对的是数据库本身,它的主要任务是连接数据源,开始准备数据库的操作工作;CRecordset主要作用是获取数据源中的数据保存到记录集之中,并且对记录集进行操作;CRecordView记录集的显示,方便观察修改,而CFieldExchange的作用是使数据集的数据与数据源表中的相对应数据进行交换。(二) MFC技术MFC是在VC+6.0环境下编写的应用程序的一个框架和引擎,是挂在C+ SDK(专业软件开发

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

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁