ImageVerifierCode 换一换
格式:DOCX , 页数:84 ,大小:434.68KB ,
资源ID:21908254      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/21908254.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(聊天系统客户端的设计与实现本科生毕业设计论文Word格式文档下载.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

聊天系统客户端的设计与实现本科生毕业设计论文Word格式文档下载.docx

1、现在也有很多,在网络上不使用服务器的通讯软件,这种软件小巧且方便,也能解决一部分问题。但是有服务器的通讯软件,有着不可比拟的优势:可以发送离线消息,不管用户当时是否在线,下次上线时,就可以看到这条消息了。可以保存用户的个人信息或介绍,供人查看。而且,那种通讯软件,是以机器为通讯单元的,而这种聊天软件是以人为通讯单元。总之,这种软件在网络上,还是有很大的用途的,为网络上通讯,带来极大的方便。虽然说,现在这个软件已经有公司把它开发出来了,我再做也不一定有新意,也未必可以做得更好,但作为毕业设计,也算是对我能力的一个考验和这四年来我学习知识的一个检查。如果这个软件做得比较成功的话,能为网络通讯带来一

2、定的方便的话,我就很满足了。1.1.2选题意义以前聊天的方式早已离我们远去。自从我们顺应现代工业的潮流,从平房搬入楼房之后,在享受自动的水、电、煤气之时,我们也失去了旧日街坊邻里聚在一起群聚而谈的热闹和温情。甚至这种气氛也渗透到了家庭内部,我们与家人一起聊天的时间也越来越少。然而这并不是说人们不需要聊天提供的享受。在人情淡薄怀旧气氛浓重的九十年代末期,网络聊天出现了。那些寂寞无助的“亚细亚的孤儿”们忽然发现了这一巨大的狂欢场所,更有甚于电子游戏带给他们的新奇和喜悦。“网聊”借助网络这种现代通讯手段在一定程度上恢复甚至拓展了传统聊天在人们生活中失去的地盘。这些因素都决定了网络聊天势必成为一种青年

3、人的流行事物。1.2任务、要求及问题提出1.2.1任务、要求本设计基于TCP/IP通信开发聊天程序,综合利用VC+程序设计语言,以SQL Server2000数据库做后台开发出一高效实用的聊天系统客户端软件。该系统要求实现:1.实现各种信息的系统化、规范化和自动化;2.客户端应具有十分友好的主窗口界面,登陆界面和注册界面等;3.客户端可以使用户方便地进行登录、下线、接收消息和发送消息等;4.客户端能够使用TCP连接实现与服务器端进行良好的协作与通信;5.客户端能够使用IP连接,与其他客户端进行信息的收发;6.客户端各个界面的设计合理、实用。1.2.2问题提出随着计算机应用技术的日益普及,网络也

4、遍及到我们生活的每个角落,很好的利用这人资源,将为我们的工作和学习,带来极大的方便和提高工作效率,所以,开发一个网络里的C/S通讯软件,是十分必要。由于采用面向对象方法开发软件具有明显的优点,本系统将采用面向对象方法进行开发。由于采用面向对象的系统模型可以使整个软件系统的结构变得更加灵活,本系统的结构模型将采用面向对象的系统模型,采用VC+6.0这个可视化开发工具进行编码。传统的软件工程方法有生命周期方法和快速原型法。面向对象方法学是一种全新的软件工程方法,其出发点和基本原则是尽可能模拟人类习惯的思维方式,把构成客观世界的实体抽象为对象。概括地说,面向对象方法学有四个要点:1.认为客观世界是由

5、各种对象组成的,复杂的对象可以由比较简单的对象以某种方式组合而成;2.把所有对象都划分成各种对象类,每个对象类可以定义一组数据和方法;3.按照子类和父类的关系,把若干对象类组成一个层次结构的系统;4.对象彼此之间仅能通过传递消息互相联系。用面向对象方法学开发的软件有以下优点:1.与人类习惯的思维方法一致;2.稳定性好;3.可重用性好;4.可维护性好。1.3国内外发展概况1.3.1国内外发展概况伴随着网络的发展,已经有大量的聊天类软件进入了实用阶段,例如现阶段大家经常使用的QQ,ICQ和MSN等,他们已经融入到大家的网络生活中,成为大家网络生活中必不可少的组成部分。而且其程序的功能也伴随着网络技

6、术的发展而不断的完善和发展,从最初的只支持文本式聊天一直到现在的图文聊天、语音聊天、视频对话等,技术越来越成熟可靠。传统聊天是指在任何现代通讯技术出现之前人类最寻常的交流方式,即面对面地对话。它包括非正式的私人谈话,如家人团聚、邻居串门、朋友造访,也包括一些较为随意的多人集会如酒会、沙龙和座谈会。聊天的特点在于它的无目的性,天南地北,海阔天空,都可以作为谈资助兴,所以正式的访谈和会议都不在聊天之列。传统聊天具有多重社会功能,比如交流情感、促进友谊、扩散信息等等,但最主要的还是消闲,一种有效的排解无聊的手段无聊这一词的字面意思就是指“不值一聊”。聊天作为一种消闲手段廉价而富有人情味,很适合人类这

7、种拥有语言能力的高等群居动物。梁实秋的“雅舍小品”里有专文谈聊天的好处。即使在现代通讯方式已经非常普及的今天,传统聊天方式依然不可能被取代,然而它占有人们的时间已经大为缩小。虽然电话和网络提供了远程的即时交流手段,但是现代社会一方面加快了人们的生活和工作节奏,另一方面以商业化的手段向人们提供了更多消闲方式,其中电视就挤占了我们原先大量的聊天时间。由于电视的诱惑,传统聊天被迫让出了它在人类生活中的地位。茶余饭后不再是门前一张板凳围在一起胡侃,而是每家每户坐在封闭的单元房内面对一台电子显像管。电视节目虽然表面上比聊天更为丰富多彩,但是看电视本身单向传递信息,没有反馈机制,观众只是被动地接受信息,只

8、在极小的程度上参与节目。电视并不促进观众思考,也不会根据观众收看时的反应做出调整。更不要说电视的非人格化与聊天富有人情味的区别。电视虽然对人类消闲时间的争夺战中胜出,但它却不可能满足人类所有的需要,尤其是传统聊天能够满足的那些需要。这些需要也不是电子游戏、观看电影话剧表演甚至旅游所能替代的。这时,一种新的聊天形式借助网络生长出来,填补了人们的精神空白。网络聊天同样具有传统聊天的基本功能,即消闲的作用,它也同样可以交流情感、促进友谊、传递信息,满足表达欲望。但它并非是传统聊天在网络上简单的呈现和复制,它具有并非本质但十分重要的特殊性质。1.3.2发展趋势最后试着讨论一下网络聊天的命运。网络聊天的

9、现实存在不可能因为老师和家长的反对而消除,也不会因为某某法规的出台而被管制。淘汰它的只能是更发达的聊天技术,即语音聊天。语音聊天更为经济快捷,单位时间传递的信息量也更大。语音聊天的技术已经成熟,待它普及之后成熟之后,目前这种“打电话”的网络聊天方式将成为历史。等有一天,我们都可以像打免费电话那样语音聊天时,我们还会怀念当年那段“此时无声胜有声”的网络聊天故事吗?第二章 设计原理和过程2.1用户需求分析提供基于TCP/IP网络的即时消息传送、大小图标方式、实时聊天、多人聊天等功能。具体列举如下:支持多账号。可以同时发送同一个消息给多人,通过输入这些人的号码列表或姓名列表。可以同时发送一个消息给所

10、有好友。即使用户不在线,也能通过服务器发送离线消息。提供消息、聊天的历史记录,方便对信息的查看和管理。提供查看在线的人的功能。提供按ID或姓名查找用户的功能,添加用户方便。小窗口显示,不占用屏幕很大的空间。支持隐身登陆,可以看到在线的朋友,朋友却不知道你上线。可以实时显示用户的状态和随时改变自己的状态。提供了自动弹出消息。好友上线通知。好友下线更新。查看好友信息。按姓名或号码查找某人。在好友列表中删除某人。更改个人信息。系统设置。主窗口总是浮在最上端。速度快,占用资源少。2.2设计原理概述采用客户端服务器模型,使用从MFC类中的CAsyncSocket类的派生类进行实现底层通讯,底层利用UDP

11、数据报协议进行通讯,这样,便于客户端之间的直接通讯,也可以高效的传送消息。因为使用UDP协议进行通讯,所以要自己控制其可靠性。我每发送一个数据,接受方接受到数据后,会发回一个响应信息,发送方在一个超时时间内,收到响应信息,就表示发送数据成功,若没有收到,就表示发送失败,会按用户指定的次数N,重试N次,如果N次都失败,就返回发送数据失败。当然,发回来的确认信息也可能丢失,但确认信息很短,相对来说,丢失的机率会小一些,是一个折中的办法。为了保存用户信息和好友信息及一些相关数据,服务器使用到数据库技术。服务器的数据库采用的是ODBC的SQL2000数据源,服务器访问数据库,用的是MFC中的CData

12、base和CRecordset,因为,对数据库的操作简单,服务器端,我只要功能,不需做界面,所以使用Sql语句直接访问数据库,已经足够满足要求了。服务器运行的流程为:服务器运行后,开启服务,则服务器开始侦听用户请求,如有信息发送过来,首先,发送回确认信息,然后,建立一个线程,处理接受到的数据。在线程里,按照接受到数据的类别,进行相应的处理,如有需要,会向用户发送处理的结果,或成功或失败的消息,处理结束后,线程就结束了。这样,可以实时接受每个用户的请求,不会因为处理一个用户的请求,而忽略了其它用户。服务器端主要是为用户存储必要的信息,协调用户之间的通讯,服务器端的设计,主要在功能上面。服务器端的

13、设计和底层通讯的方法,将是我讲述的重点。客户端的运行流程为:若有本地用户信息,则取出本地用户信息,显示登陆窗口,若没有,则显示用户注册窗口(在登陆窗口里,也可以选择用户注册)。登陆时,可选择是否隐身,进入系统后,好友列表中,在线的人,将以高亮度显示,并处在列表的上头。不在线的人,将以灰色显示。登陆后,如果有的话,服务器会发来好友给你发送的离线消息。如果有好友上线了,就会通知你,好友下线了,你也可以在好友列表中看到,你可能接受到别人给你发送的消息。根据用户的操作,可以向好友发送消息,查看好友信息,查看在线的人,查找用户等等功能。客户端主要是提供给用户一个友好的用户界面,方便用户操作,客户端主要负

14、责从服务器上得到数据后,显示给用户。从服务器得到好友的IP和Port后,就可以直接与好友进行通讯,聊天等等。客户端主要是界面的设计(除了底层通讯的以外),根据不同的要求,向服务器发送各种类型的请求。然后等待服务器的响应。客户端的界面的设计很繁琐,没有详细介绍的必要,所以,我的重点将放在服务器的设计上。客户端只是简要的说明一下。2.3系统模块设计聊天系统将分为六大模块,包括用查找户模块,查找在线用户模块,发群体消息模块,系统参数模块,个人设定模块,关于模块。各模块功能如下图2-1所示:图2-1 聊天系统模块在信息世界中,信息从客观事物出发流经数据库,通过决策机构最后又回到客观世界,信息的这一循环

15、经历了三个领域:信息世界,数据世界,现实世界。现实世界的事物反映到人的头脑中,人的大脑对它有个认识过程,经过分析(选择、命名、分类等)进入信息世界。这些信息再进一步加工、编码,然后进入数据世界,而软件系统的开发工作需要考虑这两个方面的问题,也就是要考虑系统开发所需要的数据,以及如何对这些数据进行操作。这两个问题贯穿了整个软件系统的开发过程,这也就是数据库的设计问题,也是软件设计的一个核心。在系统设计的开始,我首先考虑的是如何用数据模型来数据库的结构与语义,以对现实世界进行抽象。目前广泛使用的数据模型可分为两种类型,一种是独立于计算机系统的“概念数据模型”如“实体联系模型”,另一种是直接面向数据

16、库逻辑结构的“结构数据模型”。在本系统中我采用“实体联系模型”(ER模型)来描述数据库的结构与语义,以对现实世界进行第一次抽象。ER模型直接从现实世界抽象出实体类型及实体间联系,然后用ER图来表示数据模型。它有两个明显的优点:接近于人的思维,容易理解;与计算机无关,用户容易接受。但ER模型只能说明实体间语义的联系,不能进一步说明详细的数据结构,它只是数据库设计的第一步。ER图是直观表示概念模型的工具,它有四个基本成分:1.矩形框,表示实体类型(考虑问题的对象)。2.菱形框,表示联系类型(实体间的联系)。3.椭圆形框,表示实体类型和联系类型的属性。对于主键码的属性,如下表示:属性名(*)。4.直

17、线,联系类型与其涉及的实体类型之间以直线连接。本系统为聊天系统客户端的实现,主要是聊天为主,考虑了多方面的因素以后,确定系统图如下:下面就是各实体及联系类型的属性图:(为了表达的方便,在这里我没有在一张图上表达出所有的关系,而是分别采用实体属性关系图(即E-R图)来表达数据库的结构。)本系统的实体图如下图所示:图2-2 用户信息图2-3 好友信息 图2-4 离线消息2.4服务器数据库设计服务器数据库设计的要求是要能够满足客户端的需求,保存用户信息和用户好友信息,提供离线消息的服务,和发广播消息的服务等。总共有三个表:用户信息表(Users)好友信息表(Friends)离线消息表(OffMsg)

18、表2-1 用户信息表(Users)字段名称说明长度UserId(主键)自动编号4字节长整形Id用户帐号Photoid用户的图象编号password用户登陆的密码字符串name用户的姓名sex用户的性别单字节整形 0男1女2未知age用户的年龄字符串 (为了适应不愿填写此项的人)canbeadd能否被人加为好友单字节整形 (0,1,2 不能被加入,允许被任何人加入,需要身份验证)email电子信箱homepage个人主页address地址phone电话fax传真department部门description个人简介表2-2 好友信息表(Friends)Num(主键)MyId自己帐号FriendI

19、d朋友帐号表2-3 离线消息表(OffMsg)MsgId(主键)RecvId接受者帐号SenderId发送者帐号RecvTime接受时间nIndex发送消息类型Msg发送消息备注类型2.5客户/服务器程序设计C/S模型也是一种网络模型,但与前述的模型不同,它并不是定义了网络的层次结构,而是描述了一种网络程序运行的方式。C/S模型将网络应用程序分为客户和服务器两部分。客户方对服务器方发送信息请求,服务器方对其做出相应回答,提供服务。在TCP/IP网络应用中,多数网络应用程序是使用C/S模型设计的。服务程序通常在一个众所周知的地址监听对服务的请求,也就是说,服务进程一直处于休眠状态,直到一个客户程

20、序提出了请求信息。此时,服务程序被惊醒并且为客户提供服务,对客户的请求作出适当的反应。虽然基于连接的服务是设计C/S应用程序的标准,但有些服务也是可以通过数据报Socket提供的。通常,网络应用程序包含两个独立的应用程序:客户程序和服务器程序。但是,也可以设计同时完成这两种功能的程序,例如,一些服务器程序如果不能完成一个服务请求时,它将转而充当客户程序,向其它服务器程序请求信息。这方面的一个典型例子就是提供Internet从域名到IP地址映射服务的DNS服务器。为了充分理解TCP/IP协议族,必须理解几个重要术语。这些术语指出了两个TCP/IP传输协议:用户数据包协议(UDP)和传榆控制协议(

21、TCP)之间的区别。这些术语进一步描述了与网络连接、协议可靠性以及数据服务有关的协议特性。当建立服务器程序时,应该将服务器程序设计成等候客户的请求。你知道,TCP传输层通过协议端口和应用程序(像服务器和客户)通信,也就是说,为了按收客户请求,服务器程序必须对传输层的一个特定协议端口进行侦听。当服务器配置socket接口时,它使用bind()函数让socket执行体登记一个协议端口。也就是说,程序告诉socket执行体使用哪个协议端口进行数据传送。Socket执行体接着告诉传输层某个特定协议端口已被使用,并将其收到的所有数据传送给Socket API。使用无连接协议的程序和使用面向连接协议的服务器程序之间的主要相似之处是它们都必须对一个协议端口进行侦听。例如,无连接和连接服务器程序必须在协议端口侦听客户请求。同样,由于无连接客户程序没有和远地主机建立直接连接,所以它也必须对协议端口进行侦听,以便接收以对它服务请求产生的数据报应答。Socket API中的bind()函数让程序将一个本地地址(包括主机地址和协议端口)和一个Socket联系起来。下面程序行显示了一个典型的函数调用:resultbind ( socket_handle, local_structure

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1