毕业设计(论文)-即时通信系统的设计与实现.docx

上传人:爱问知识人 文档编号:3949114 上传时间:2019-10-11 格式:DOCX 页数:30 大小:805.27KB
返回 下载 相关 举报
毕业设计(论文)-即时通信系统的设计与实现.docx_第1页
第1页 / 共30页
毕业设计(论文)-即时通信系统的设计与实现.docx_第2页
第2页 / 共30页
毕业设计(论文)-即时通信系统的设计与实现.docx_第3页
第3页 / 共30页
毕业设计(论文)-即时通信系统的设计与实现.docx_第4页
第4页 / 共30页
毕业设计(论文)-即时通信系统的设计与实现.docx_第5页
第5页 / 共30页
点击查看更多>>
资源描述

《毕业设计(论文)-即时通信系统的设计与实现.docx》由会员分享,可在线阅读,更多相关《毕业设计(论文)-即时通信系统的设计与实现.docx(30页珍藏版)》请在三一文库上搜索。

1、目 录1 绪论11.1 本课题研究的背景11.2 研究意义11.3 发展现状11.4 研究目标和研究内容21.5 论文的组织结构22 系统需求分析32.1 问题定义32.2 系统可行性分析32.2.1技术可行性分析32.2.2经济可行性分析42.2.3现有系统分析43 关键技术概述63.1 开发工具的选择与介绍63.2 客户端与服务器的连接63.3 数据访问技术ADO.NET83.4 连接过程94 系统概要设计104.1 数据库设计104.1.1方案104.1.2表设计104.2 各个模块的设计104.2.1登录模块104.2.2注册模块114.2.3添加好友模块124.2.4客户端与服务器通

2、信模块124.2.5客户端与客户端通信模块154.2.6公共数据区155 系统的实现165.1 登录窗口的制作165.2 注册窗口175.3 添加好友模块175.4 联系人界面185.5 信息的解析196 系统测试216.1 测试的内容和方法216.1.1用户注册的测试216.1.2用户登录测试226.2.3用户登陆测试246.2.4通信测试247 结束语267.1 总结267.2 下一步工作26致谢27参考文献28281 绪论1.1 本课题研究的背景即时消息服务正在快速的发展和影响着人们生活的各个方面,毫不过分地说,即使消息已经渗透到了人类社会的各行各业中。即时消息主要被用于日常交流和保持联

3、系。另外,它广泛地应用于办公领域,如讨论问题,协商工作日程等。目前还出现了许多面向企业的即时消息应用,它们为企业人员协同工作,进行资源管理和客户关系管理带来了便利。大多数即时消息软件还集成了其他诸如文件传输,语音视频交流,新闻订阅等服务。即时消息已不仅是日常交流的简单工具,它逐渐成为互联网信息平台重要的组成部分。本文就是要实现一个即时消息软件系统。1.2 研究意义作为应用软件的一个重要分支,即时通信系统(IM)自其产生开始就备受瞩目。即时消息系统的研究意义主要体现在以下几个方面:1.与传统的交流方式相比,即时消息具有低廉的价格,用户体验更加舒服的优势,这将改变人们的行为方式提高工作效率,具有非

4、常重要的意义。2.相对于传统的沟通方式,在沟通方式多样性、成本减控、沟通效率、协作方面都有着明显的优势,逐渐成为市场新宠,更带来无与伦比的操作体验。1.3 发展现状即时消息(Instant Message,IM)交流是一种实时的互联网交流方式。经过二十多年年的发展,IM已经成为继电子邮件和web之后的第三大互联网应用。即时消息以其与众不同的新服务特性出现在市场上。在早期,即时消息仅限制在公告板的快速消息(splashing message)中使用。逐渐地,即时消息传递成为年轻人的主要兴趣所在,即时消息传递是不同年龄群尤其是年轻人之间相互通信最常用的手段。 即时通讯软件作为互联网个人通讯的客户端

5、程序与现实生活中的手机有着异曲同工之妙,是绝大多数网民互联网应用的必备软件。基于庞大的用户资源,即时通讯软件的商业价值凸显,成为了极为强大而又极具潜力的网络传播媒介。随着技术的发展,目前的即时通讯软件已经不单单局限于用户间的聊天活动,运营商开始利用即时通讯软件平台不断地进行新业务的拓展和整合。在国内,基于长期以来积累的庞大用户资源,以腾讯QQ和微软MSN为代表的第一代即时通讯软件已经占据了IM市场的相对垄断地位。然而随着电子商务、网络游戏和近两年来SNS的流行,QQ和MSN的市场地位正受到越来越多的威胁,在一些细分市场上,基于特定应用平台的第二代即时通讯软件优势明显。1.4 研究目标和研究内容

6、本文的研究内容有以下几点:(1) 熟悉开发环境,本系统采用集成开发工具Microsoft Visual Studio 2008,后台数据库采用sqlserver 2008。(2) 熟悉C#,ADO.NET技术。(3) 熟悉软件开发流程。(4) 提高实践能力,开发一款即时聊天工具。本文的研究的目标就是开发出一款具有用户注册,添加好友,与目标好友聊天功能的即时通信软件系统。1.5 论文的组织结构本文拟从即时通信系统的研究意义、国内外的发展状况、系统研究的目的和内容、系统需求分析、系统设计、数据库设计、界面设计、系统详细设计、系统运行与测试等方面论述即时通讯系统开发与设计所涉及的问题。文章组织结构如

7、下:第一章:绪论。主要介绍即时通信系统的研究意义、国内外发展状况、研究的目的和内容等工作。第二章:需求分析。主要进行系统的介绍、系统的可行性分析、功能性介绍。第三章:关键技术概述。主要介绍本系统中所用到的主要技术和协议。第四章:系统概要设计。主要包括系统总体结构、系统主要业务流程图以及技术方案的确定。第五章:系统的实现。对系统各功能模块进行了分析设计。第六章:系统测试。对系统的各个模块进行了测试。 2 系统需求分析2.1 问题定义本系统是一个小型的即时通信系统,为用户提供了实用,可靠,方便的沟通方式。用户可以在注册页面进行注册,登录,添加好友,向好友发送信息,并接受好友消息。本系统试图让人们更

8、方便更及时的进行交流沟通,以便使人们的关系更加紧密,提高企业的生产效率,系统的主要功能如下:a)注册:使用本系统前必须注册一个账户,完成注册后获得服务权限。注册包括填写用户名和密码。b)登陆:登陆后讲给用户呈现出用户界面用户可以根据需求进行各种操作。c)添加好友:用户根据需要,添加其他用户为其好友,进行通信。d)与好友进行通信:可以发送文字信息,给好友。2.2 系统可行性分析2.2.1技术可行性分析本系统采用sqlserver 2008作为服务器的后台数据库,在通信方式上实用socket进行通信。数据库技术已经发展的相当成熟,可以使用数据库将用户信息以及各种通信所需要的信息储存,将系统所需要的

9、各种对象归纳构成关系型数据库。作为C/S类型的系统,sqlserver 2008 就是一个很好的选择。对于信息的发送接收,可以使用套接字发送和接收,在网络中,数据以字节流的形式进行传输,服务器与客户端互相建立连接后,程序需要先将要发送的数据转换为字节数组,然后使用Socket对象的Send方法发送数据,或者使用receive方法接收数据。2.2.2经济可行性分析此系统为本人毕业设计题目工作量并不是很大,在加上C#开发程序的快速性,不需要经济投入。所以在经济上,本系统的开发是可行的。2.2.3现有系统分析典型的IM工作方式如下:登录IM服务器,获取好友列表,然后修改自身标志为在线状态,当好友列表

10、中的某人在任何时候登录上线并试图通过计算机联系你的时候,系统会给你用户发送一个提示信息告诉用户有新的消息到来,请用户查收,然后你能与他建立一个聊天回话通道进行各种通信,例如,发送文字,语音聊天。通过对现有系统的分析,绘制如下流程图:图2-1系统流程3 关键技术概述3.1 开发工具的选择与介绍本系统是在Microsoft Visual Studio 2008环境下进行开发的,由于C#是在C,C+和java语言基础上开发的在.NET平台上运行为适应internet、和internet和各类网络应用而专门设计的网络语言,该语言综合了C,C+和java以及其他高级语言的优点,是一种优雅的安全的,完全面

11、向对象的语言。由于C#是专门为.NET平台设计的语言,因此它比任何在.NET平台下提供的其他语言都有无可比拟的优越性。所以本系统使用C#作为开发语言。对于服务器的后台数据库本系统采用了常用的sqlserver 2008。3.2 客户端与服务器的连接客户端是面向所有用户,是用户请求服务操作的源头,它负责把用户的请求提交给服务器,并且接受服务器返回的响应。要初始化和服务器进行通信,首先客户端和服务器进行连接,只有和服务器建立连接,进一步的通信才有可能。在设计客户端应用程序是,我们采用套接字类型的连接来访问服务器。图3-1显示服务器和客户端的连接情况。服务器创建客户端1创建客户端2创建类sokCli

12、entClientAcceptClientSocketClientSocket 连接连接类sokListen类sokClient图3-1系统服务器和客户端的连接图如上图所示,若客户端希望和服务器进行通信,则通过相应的连接函数与服务器进行连接函数与服务器进行连接,当服务器监听到连接请求时,接受请求,创建线程,进行与客户端通信。图3-2是客户端注册并登陆与服务器的通信流程控制图。图3-2客户端注册并登录与服务器的通信流程控制图(前台部分)图3-3客户端注册并登陆与服务器的通信流程控制图(后台)如流程图所示:客户端输入用户名、密码进行登陆。首先客户端在响应端口上建立与服务器的连接,一旦连接成功,将登

13、陆或者注册的网络信息流送至服务器,服务器处理之后,客户端将接收到的服务器返回的网络字节流进行分析,然后做出相应的响应。3.3 数据访问技术ADO.NETADO.NET是一组用于和数据源进行交互的面向对象类库。通常情况下,数据源是数据库,但它同样也能够是文本文件、Excel表格或者XML文件。 ADO.NET允许和不同类型的数据源以及数据库进行交互。然而并没有与此相关的一系列类来完成这样的工作。因为不同的数据源采用不同的协议,所以对于不同的数据源必须采用相应的协议。一些老式的数据源使用ODBC协议,许多新的数据源使用OleDb协议,并且现在还不断出现更多的数据源,这些数据源都可以通过.NET的A

14、DO .NET类库来进行连接。 ADO.NET提供与数据源进行交互的相关的公共方法,但是对于不同的数据源采用一组不同的类库。这些类库称为Data Providers,并且通常是以与之交互的协议和数据源的类型来命名的。3.4 连接过程根据连接启动的方式以及本地套接字要连接的目标,套接字之间的连接过程可以分为三个步骤:服务器监听,客户端请求,连接确认。 服务器监听:是服务器端套接字并不定位具体的客户端套接字,而是处于等待连接的状态,实时监控网络状态。 客户端请求:是指由客户端的套接字提出连接请求,要连接的目标是服务器端的套接字。为此,客户端的套接字必须首先描述它要连接的服务器的套接字,指出服务器端

15、套接字的地址和端口号,然后就向服务器端套接字提出连接请求。 连接确认:是指当服务器端套接字监听到或者说接收到客户端套接字的连接请求,它就响应客户端套接字的请求,建立一个新的线程,把服务器端套接字的描述发给客户端,一旦客户端确认了此描述,连接就建立好了。而服务器端套接字继续处于监听状态,继续接收其他客户端套接字的连接请求。4 系统概要设计4.1 数据库设计4.1.1方案通过前面的讨论,使用sqlserver 2008创建数据库,见文件命名为Mydatabase.Mdb,为了使数据库不会随意被修改,设定了开发人员才知道的密码。4.1.2表设计根据用户需求,在数据库中将存在一张用户表,和根据用户数量

16、而动态生成的用户好友表响应的表的结构如下: 图4-1用户数据表 图4-2用户好友数据表4.2 各个模块的设计4.2.1登录模块登录模块需要对用户的用户名,用户密码进行认证。图4-3用户登录模块4.2.2注册模块注册模块为新用户填写注册信息,并对信息处理的模块。 图4-4注册模块流程图4.2.3添加好友模块添加好友模块主要任务是,为用户提供添加有效通信对象的功能;首先要判断用户所填加的好友是否有效,即就是好友是否存在,此项工作是在服务器端完成,客户端只需要分析服务器传来的消息即可。 图4-5添加好友模块4.2.4客户端与服务器通信模块 在客户端与服务器的通信过程中,服务器管理某些通信规则说明,客

17、户端必须用它的标准和服务器通信。通常,客户端和服务器的通信都是面向请求的,请求必须被服务器认可和支持,在客户端,设计一个子模块来监听服务器的响应。在客户端与服务器进行通信时,用户发出请求,服务器必须能够解析,并作出响应,同时服务器返回的响应需要被客户端模块解析。客户端和服务器连接之后,在用于连接的TCP套接字上进行网络字节流信息的交换。网络字节流转换模块负责把网络字节流转换为对象,网络字节流解析之后,进入消息处理模块。该模块将不同的消息传递给各自对应的处理程序,这些处理程序将根据不同的消息类型做不同的处理,然后在用户界面上显示,通常当一个消息到达时将触发用户界面更新。用户通过用户界面与应用程序

18、交互,并引发不同的时间。每一种事件形成与之对应的魔种类型的消息包,这些消息被处理之后发送到服务器上。如果用户注册或者登录成功,则显示客户端主界面,界面中包含了用户所拥有的好友,以及各种附加功能按钮。登录之后的所有响应有相应的模块处理,解析从服务器上接受到的信息流,以及将发给服务器的信息转换成网络字节流,同时显示相应的消息,对话框界面,此流程图如4-6所示。图4-6客户端信息处理流程图4.2.5客户端与客户端通信模块客户端与客户端的通信模块主要是为了使用户能相互建立点对点连接,如果客户端A想要与客户端B通信,首先客户端A向服务器发出通信请求,服务器将A的地址信息发给B,然后A与B建立连接,这样A

19、与B就能直接通信了。4.2.6公共数据区公共数据区,主要存放的是从服务接受的或者经过计算将要发送到服务器的数据。为了便于各个模块或者各个线程的读取而定义的全局静态变量,如下: public static string reciveIformation set; get; /接受信息 public static string type set; get; /请求类型 public static string isLogSucssess set; get; /登录信息 public static string friendsInfromation set; get; /好友信息 public st

20、atic int addInformation set; get; /添加好友信息 public static int regInformation set; get; /用户注册信息 public static int errorTime set; get; /用户输错密码次数 public static string NewFriendsName set; get; /需要添加的用户名 public static string username set; get; /本次登录的用户名 public static string userId set; get; /本次登录的用户Id publ

21、ic static string userMessageset;get;/接受到的用户消息 public static string newUserName set; get; /新注册用户名 public static string newUserPassword set; get; /新用户的密码 public static int connSigle set; get; /连接信号量 public static int AimId set; get; /发送到对方客户的id public static int newFriendId set; get; /新好友的ID5 系统的实现5.1

22、 登录窗口的制作添加一个窗体,命名为LogFrom,向窗体加入文本框,标签,按钮如图所示,然后在双击对应的按钮,创建相应事件,在按钮登陆里调用客户端与服务其通信模块,在按钮注册里调用注册模块,当用户出发响事件系统会自动调用对应的方法为用户服务,这些模块在前面已经详细介绍了这里就不在介绍。图5-1用户登录界面当用户输入用户名或密码为空时,系统禁止用户名或密码为空,会弹出提示要求用户重新输入。如果两项均不为空,系统会在数据库的用户表中查找对应的用户名,如果无法找到相应的用户名或者密码与用户名不匹配系统会弹出提示声明密码或用户名错误。如果输入错误次数超过3次,那么系统会在弹出提示之后自动退出。如果登

23、陆成功,系统将显示主用户界面。5.2 注册窗口图5-2用户注册界面此窗口是用户,触发注册这个按钮事件时所产生的。首先在添加一个新窗体,将名字改为regFrom,对应的将控件放进窗体。同样,接下来我们要给按钮添加事件,使他们触发时自动的调用我们的子模块。在regFrom里,当按钮确定被触发后,系统首先要将,两次输入的密码进行比较,如果两次输入的密码一致,则调用客户端与服务器通信模块,将信息发送给服务器,同时也可以接受服务器回过来的信息并进行解析。5.3 添加好友模块图5-3用户添加好友界面同理也是有事件引发调用不同的子模块。(各个子模块在前面已经介绍,这里就不做详细说明了)。因为考虑到,添加好友

24、之后,在服务器端更新的同时,客户端的用户界面里面的的好友列表里面也要立即更新,所以我们在添加新好友成功之后,会立即读取新好友的信息,将他添加在好友列表里。5.4 联系人界面用户界面有三部分组成,第一部分为用户头像,当前时间,和欢迎词组成。用户头像是由一个penal组建里面添加生成。欢迎信息是有用户登录后将本用户的信息写在一个公共变量里面,然后在生成用户界面的时候从全局变量里面读取出来。当前时间有在此窗口里面添加的一个定时器来不断的从系统中去当前时间而保险出来的。第二部分为消息盒子,因为用户与用户的通信为点对点的通信,所以此时客户端也是通信对方的服务器,当通信对方发来信息到对应端口时,此时客户端

25、对消息进行解析,将收到的消息重组,放入公共数据区,并将消息盒子改为 “有信息来”提示用户查收新消息。图5-4用户界面此时,用户若要查收消息,单机“有消息来”按钮,弹出一个窗口,此窗口的主体由richTextBox构成,当此窗口生成时从公共数据区读出重组后的数据放入richTextBox。如图5-5的内容表示qw对qq说:“holle”图5-5读取消息窗口5.5 信息的解析因为客户端对服务器有各种各样的请求,而服务器将客户端发送过去的字节流转换为字符串的时候必须分清客户端到底想要请求什么样的数据服务。为了使服务器对不同的请求做出反应,我们必须在请求前加上请求类型。这个工作我们在客户端就必须做完,

26、向服务器发出请求的时候,我们可以再请求信息的最前端加上请求类型然后用特殊的分隔符将其分开。同理服务器在向客户端相应的时候,也需要在相应信息前加上对应的响应类型来告诉客户端自己正在对哪项请求进行响应。例如用户登录的时候,客户端需要向服务其发送用户的账户和密码,而服务器的任务就是将客户端发送给它的用户名和密码进行验证。为了使服务器知道客户端做的是登录请求本系统是这样做的,如下: public static string logString(string name, string password) string Msg = #log# + name + + password; return Msg

27、; 此方法是生成要发送给服务器的登录请求,name和password分别为请求登录的用户的用户明和密码,而Msg就是将要发给服务起的请求信息,在请求信息中我们用将请求中不同的元素隔开,位的就是在服务器端是服务器很容易的将需要的信息从请求信息中分离出来,而#log#正是此请求的请求类型为登录求求。将请求发送给服务器后,服务器首先用C#提供的.Split()方法将请求字符串转换为字符串数组,而数组的第一个元素就是请求的类型,接下来服务器要做的就是分清不同的请求,调用不同的方法。然后在将客户端所请求的信息,用同样的方法发送回客户端。客户端在使用服务器解析请求字符串的方法将不同的响应信息进行解析。这样

28、客户端和服务请就可以容易的分清不同的请求和响应。6 系统测试6.1 测试的内容和方法需要测试的内容有:用户注册、系统的登录、添加好友、消息传输等模块。6.1.1用户注册的测试首先尝试注册一个已经存在的用户名,结果如图6-1:图6-1异常注册A尝试注册时两次密码输入不一致,结果如图6-2:图6-2异常注册B成功注册如图6-3:图6-3成功注册6.1.2用户登录测试当用户密码不正确时,结果如图6-4:图6-4密码错误当密码多次输错之后,系统会将此用户锁定,结果如图6-5:图6-5多次密码错误成功登录如图6-6,可以看到此时用户并没有好友。接下来我们就要测试添加好友的功能。图6-6用户成功登陆6.2

29、.3用户登陆测试添加好友功能测试,结果如图6-7:图6-7添加好友6.2.4通信测试用户exampleA给exampleB发送”hi!”,如图6-8中,用户exampleB的“消息盒子按钮变”成了“有消息来”。图6-8发送消息用户example需要接受消息时,点击按钮“有消息来”接收消息,此时结果如下,看一看到,用户界面中的“有消息来”有更改为“消息盒子”。消息接受框中信息为“exampleA Said hi!”图6-9接收消息测试结果表明,本系统能完成注册、登录、添加好友、聊天等功能。7 结束语7.1 总结本文主要研究即时消息服务相关技术的应用,并提出了一种开发C/S模式的即使消息系统的设计

30、和实现方法。本文中我们首先介绍了即使消息的发展历程和发展方向,然后给出了IM系统较为详细的设计,开发过程。针对各个模块以及本系统所使用的关键技术进行了分析说明,分析了系统实现方法和信息处理流程。最后我们提出了IM发展中遇到的一些问题与其可能的解决方案并对IM的发展进行了一下展望。7.2 下一步工作随着社会的发展和需求,各种即时消息的应用会层出不穷,而相关的协议与技术也会日益的更新和完善。伴随着网络融合,服务融合的发展趋势,即时消息将会出现在各种服务和融合应用中,以满足用户日益高涨的需求。本文中所介绍的IM相关技术中有些已经被广泛应用,有些还在探索阶段。新词我们下一步的工作是继续努力挖掘即使消息

31、的相关技术与协议,并在这个基础上,对本系统进行更加丰富的扩展与完善让系统具有传送文件、视频会议的功能,使其能够嵌入到更多的应用领域中。致谢在C/S模式的IM系统设计开发过程中,我学到了许多知识和技术,而这些知识的取得不是我一个人的,在此我要向许许多多的人致深深的谢意!首先感谢我的指导老师冯健,感谢冯老师长时间对我的悉心教导和耐心帮助。我所取得的成绩跟冯老师的帮助和指导是分不开的。冯老师严谨负责的治学态度,积极的热情和工作态度和乐观向上的生活态度使我受益匪浅,必将指引我今后的生活和学习。我还要感谢在我完成设计过程中帮助我的各位同学,特别是我的室友们,我要给你们至上深深的谢意感谢你们对我提供的帮助

32、。最后,对百忙之中审阅我的论文和参加答辩会的老师们表示最诚挚的谢意。 参考文献1 W.Richard Stevens 著;谢希仁,范建华,等译.TCP/IP 详解 卷1M.北京:机械工业出版社. 20002 吴洁.XML 应用教程 M. 北京:清华大学出版社. 20073 Jasmin Blanchette,Mark Summerfield 著;闫锋欣,曾泉人,等译.C+ GUI Qt4 编程M . 北京:电子工业出版社. 20084 The Internet Society.RFC3920:XMPP 核心协议S.20045 杨帆,网络实时参考模式分析与评价D20046 杜明华即时通讯市场竞争

33、浅析J科技资讯,2007,(6): 63677 玉莹桌面门户的崛起N中国经营报,2005, (6): 1131278 庞怡,许洪光,姜媛即时通讯Y-具现状及发展趋势分析. 科技情报开发与经济,2006,(16)9 陈青,才力中国即时通讯:整合与变革的前夜J中关村. 2005,(1): 132710 RFC 2543. SIP:Session Initiation Protocol S.IETF,1999.11 RFC 2327. DSP: Session Description ProtocolS. 1998.12 RFC 2779. Instant MessagingPresence Protocol Requirementss13 Merike Kaeo网络安全性设计M译者:潇湘工作室北京:人民邮电出版社,2000262814 R L RivestRFC I 321The MD5 Messagedigest AlgorithmJ. NtemetRequest for Commems 1321,Apr199215 R L RivestRFCl321The MD5 Message-digest AlgorithmJ.ImemetRequest for Comments 1321,Apr,1992

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

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1