《[计算机]即时通讯系统毕业论文.doc》由会员分享,可在线阅读,更多相关《[计算机]即时通讯系统毕业论文.doc(33页珍藏版)》请在三一办公上搜索。
1、分类号:TP311.1 U D C:D10621-408-(2011)2301-0密 级:公 开 编 号:2007121004即时通讯软件设计与实现论文作者姓名:孟勤申请学位专业:网络工程申请学位类别:工学学士指导教师姓名(职称):韩斌(副教授)论文提交日期:2011年6月10 日即时通讯软件设计与实现摘 要网络通讯是目前计算机用户进行交流最普遍的方式,各种各样的聊天软件也层出不穷;服务提供商也提供了越来越丰富的通讯服务功能。当前中国的互联网技术已经进入了一个飞速发展的时期,即时通讯工具作为当今网络应用的主流,越来越受到了人们的青睐,使人们的网上生活更加丰富多彩。当今使用最为广泛的即时通信工具
2、,比如腾讯公司的QQ聊天软件。本毕业设计就是模拟QQ聊天软件,开发一个包括文字聊天、文件传输等功能的聊天软件。系统采用C/S架构,基于.NET平台开发。由服务器端和客户端程序组成。采用TCP/IP通信协议,使用XML对通信报文进行封装,便于应用程序API调用,组装,解析XML报文。主要实现的是聊天软件的部分功能,即文字聊天、文件传输等功能,主要完成的任务包括服务器模块的设计、文字聊天和文件传输等功能。通过运行、测试与分析,该多功能聊天软件运行稳定、可靠,具有一定的实用价值。关键词:聊天软件;文字聊天;文件传输;C#;XML报文The Design and Implementation of I
3、nstant Messaging SoftwareAbstractNetwork communication is the most common way of computer users to communicate, a variety of chat software is also emerging; service providers also offer a more feature-rich communications services. Chinas current Internet technology has entered a period of rapid deve
4、lopment, instant communications tools as the mainstream of todays network applications is getting the favour of more and more people, peoples online life is becoming more colorful. Today the most widely used instant messaging tools, such as Tencents QQ chat software. The graduation project is to sim
5、ulate the QQ chat software, including text chat, file transfer, communication and other functions.System using C/S structure, based on platform development. The client and server components. Using TCP/IP communication protocol and using XML to communication message, easy to encapsulate applications
6、API calls, assembly, analytical XML packet. This software realizes the part of function of the chat software, which is text chat, file transfer and other functions, the main task of the module design, including the server ,text chat and file transfer etc. Through the operation, test and analysis, th
7、e multifunctional chat software operation is stable, reliable, and has a certain practical value.Key words: Chat software; text chat; file transfer; C#;XML目 录论文总页数:28页1 引言11.1 课题背景11.2 国内外研究现状11.3 本课题研究的意义21.4 本课题的主要工作22 系统开发环境和关键技术22.1 开发环境22.1.1 硬件环境:22.1.2 软件环境32.2 关键技术32.2.1 C#语言简介32.2.2 XMPP协议4
8、2.2.3 TCP协议和TCP/IP协议52.2.4 Client/Server结构(客户端/服务器模式)63 系统分析与设计73.1 需求分析73.2系统总体框架73.2.1总体设计73.2.2功能模块83.3 系统详细设计103.3.1多线程设计103.3.2 数据库的设计103.3.3服务器的设计113.3.4 客户端的设计153.3.5 文本通信功能设计173.3.6 文件传输194 系统测试22结 论25参考文献26致 谢27声 明281 引言1.1 课题背景在网络无所不在的今天,在Internet上,有ICQ、MSN、Gtalk、OICQ等网络聊天软件,极大程度上方便了处于在世界各
9、地的友人之间的相互联系,也使世界好像一下子缩小了,不管你在哪里,只要你上了网,打开这些软件,就可以给你的朋友发送信息,不管对方是否也同时在线,只要知道他有号码。随着互联网应用越来越丰富,以快速、交互、简便为代表的即时通讯工具,已经成为当前网络用户最喜爱的网络沟通工具。聊天软件作为当今使用最为广泛的即时性通信工具之一,给互联网上的用户提供了诸多的服务,如文字聊天、文件传输、语音聊天、视频聊天等功能。作为即时通讯工具最具增长潜力之一的聊天软件,不仅在基础应用方面,还是产品扩展应用方面都将有质的飞跃,它为满足人们的需要,将其功能不断的完善。随着聊天软件功能的不断完善,用户通过聊天软件在互联网上尽情的
10、交谈,不但可以文字聊天和文件传输,还可以通过语音、视频来聊天。在今后随着互联网技术的发展,聊天软件也在以前所未有的速度改变着人们的生活方式,它必定会成为人们网络生活不可缺少的一部分。1.2 国内外研究现状1996年11月ICQ在全球发布,拉开了互联网IM(Instant Messenger,即时通讯)应用的序幕。就是这样一款小软件在短短数年时间里发展出一个巨大的IM产业。时至今日,即时性通讯工具早已成为最热门的网络应用之一。国内外的聊天工具举不胜数。ICQ作为全球第一款即时性通讯工具,在经过短短数年的发展,其行业内的地位如今已是无人能够撼动。ICQ名字取自英文“I seek you”的谐音,即
11、是“我找你”的意思。最初的ICQ只有两个特性,即用户列表和即时聊天。但一经推出就受到众多网民的喜爱,6个月内其注册用户迅速攀升至85万,1998年它的用户数量更是翻了10数倍,达到了1200万人。ICQ的迅猛发展也让当时的互联网领头羊Yahoo和在桌面软件领域独步天下的微软嗅到了商机,它们分别推出了Yahoo Messenger、MSN Messenger和昙花一现的MS Chat。即时通讯市场雏形顿显,有了国际互联网巨头和最大软件公司的融入,即时通讯时代的大幕就此徐徐拉开。当ICQ风行全球的时候,在国内各种仿ICQ的中文IM软件也纷纷推出,时至今日,占据国内的市场的主要是腾讯公司的QQ、微软
12、的MSN、雅虎的雅虎通等。其中腾讯公司的QQ以占据了国内70%以上的市场。随着IM应用的深入,其功能早已超越了初期的即时文字聊天。表情图标早已成为各个IM软件的标准功能,文件传输、语音/视频聊天、游戏、网上交友等高级功能也正越来越多地被集成进入IM应用。事实表明,现在的IM已不再是一个简单的沟通工具,而是一个信息资讯、交流互动、休闲娱乐中心,IM平台上的语音、视频、音乐点播、信息共享等新应用层出不穷。发展到现在,IM软件越来越成熟,IM产业链也已经形成,已经成为现代人和现代经济中不可或缺的一部份,相信未来IM软件的道路会更加宽广和精彩。1.3 本课题研究的意义21世纪是信息的时代,随着互联网技
13、术的发展,信息在传递方面也有了崭新的一面。现今聊天软件成为信息传递最为广泛的应用工具,它发挥了即时性通信的特点,可以让用户在第一时间内得到信息的交流,它不仅可以让用户进行文字聊天,而且还增添语音、视频功能。这样可以让网上的好友身临其境的面对面的聊天,让彼此之间更为深入的了解。人性化的设计让每个用户都可以得心应手的使用,从而获得更多人的青睐。Internet的出现连通了整个世界,而聊天软件的出现则连通了每一位网上的用户。随着网络应用的发展,聊天软件已经成为最热门的网络应用之一。经历了近几年突飞猛进的发展之后,即时通讯工具早已不再是简单的互联网通讯工具,它已经成为一个集互动交流、休闲娱乐、信息管理
14、为一体的多元化互联网应用平台。总之,聊天软件的出现给人们彼此之间的沟通带来了无比的方便,人们可以通过聊天软件建立深刻的友情,让人们在互联网上的交流更加充满活力与生机。1.4 本课题的主要工作聊天软件作为使用最为广泛的即时性通讯工具,它在拥有文字聊天基础功能的同时,为满足用户的需求,还增加了文件传输的功能,成为现在最为主流的网上应用软件。本论文主要对聊天软件的文字聊天、文件传输功能进行分析与研究,总结出实现的相关理论与知识。2 系统开发环境和关键技术2.1 开发环境本设计是一个局域网即时通讯软件,要在短时间内开发出来并且满足客户要求,无论是硬件还是软件都要选择合适,要求如下:开发设备完善;开发机
15、器的性能必须稳定;操作系统的选择应该适当;开发出的程序可以在尽可能多的平台上运行;要求运行机配置尽可能抵挡。对此,我选择的硬件环境和软件环境如下:2.1.1 硬件环境:l 处理器:Intel Pentium PIII或者更高的处理器l 内存:256MB或更高l 网络:局域网2.1.2 软件环境l 操作系统:Windows XP/Windows 7l 开发平台: Microsoft Visual Studio2008l 开发语言:C#2.2 关键技术2.2.1 C#语言简介C#是一种最新的、面向对象的编程语言。它使得程序员可以快速地编写各种基于Microsoft .NET平台的应用程序,Micr
16、osoft .NET提供了一系列的工具和服务来最大程度地开发利用计算与通讯领域。正是由于C#面向对象的卓越设计,使它成为构建各类组件的理想之选无论是高级的商业对象还是系统级的应用程序。使用简单的C#语言结构,这些组件可以方便的转化为XML 网络服务,从而使它们可以由任何语言在任何操作系统上通过Internet进行调用。最重要的是,C#使得C+程序员可以高效的开发程序,而绝不损失C/C+原有的强大的功能。因为这种继承关系,C#与C/C+具有极大的相似性,熟悉类似语言的开发者可以很快的转向C#。l 效率与安全性新兴的网络经济迫使商务企业必须更加迅速的应对竞争的威胁。开发者必须不断缩短开发周期,不断
17、推出应用程序的新版本,而不仅仅是开发一个“标志性”的版本。C#在设计时就考虑了这些问题。它使开发者用更少的代码做更多的事,同时也不易出错。l 支持现有的网络编程新标准C#程序员可以在Microsoft .NET平台上事半功倍的构建应用程序的扩展框架。C#包含了内置的特性,使任何组件可以轻松转化为XML网络服务,通过Internet被任何操作系统上运行的任何程序调用。更突出的是,XML网络服务框架可以使现有的XML网络服务对程序员来说就和C#对象一样。这样,程序员就可以方便地使用他们已有的面向对象的编程技巧来开发利用现有的XML网络服务。l 消除大量程序错误C#的现代化设计能够消除很多常见的C+
18、编程错误。 例如:资源回收减轻了程序员内存管理的负担;C#中变量由环境自动初始化;变量是类型安全的;这样,程序员编写与维护那些解决复杂商业问题的程序就更方便了;对版本的更新提供内在的支持降低了开发成本更新软件组件是一项很容易出错的工作,因为代码的修改可能无意间改变原有程序的语义。为协助开发者进行这项工作,C#为版本的更新提供内在的支持。例如,方法重载必须显式声明。这样可以防止编码错误,保证版本更新的灵活性。还有一个相关的特性就是对接口和接口继承的内在支持。这些特性使得C#可以开发复杂的框架并且随着时间不断发展更新它。l C#语言允许类型定义的,扩展的元数据。这些元数据可以应用于任何对象。项目构
19、建者可以定义领域特有的属性并把他们应用于任何语言元素-类,接口等等。然后,开发人员可以编程检查每个元素的属性。这样,很多工作都变得方便多了,比如编写一个小工具来自动检查每个类或接口是否被正确定义为某个抽象商业对象的一部分,或者只是创建一份基于对象的领域特有属性的报表。定制的元数据和程序代码之间的紧密对应有助于加强程序的预期行为和实际实现的之间的对应关系。l 扩展交互性作为一种自动管理的,类型安全的环境,C#适合于大多数企业应用程序。但实际的经验表明有些应用程序仍然需要一些底层的代码,要么是因为基于性能的考虑,要么是因为要与现有的应用程序接口兼容。这些情况可能会迫使开发者使用C+, 即使他们本身
20、宁愿使用更高效的开发环境。C#采用以下对策来解决这一问题:内置对组建对象模型(COM)和基于Windows的API的支持;允许有限制地使用纯指针(Native Pointer)。在C#中,每个对象都自动生成为一个COM对象。开发者不再需要显式的实现IUnknown和其他COM接口这些功能都是内置的类似的,#可以调用现有的COM对象,无论它是由什么语言编写的。C#包含了一个特殊的功能,使程序可以调用任何纯API。在一段特别标记的代码中,开发者可以使用指针和传统C/C+特性,如手工的内存管理和指针运算。这是其相对于其它环境的极大优势。这意味着C#程序员可以在原有的C/C+代码的基础上编写程序,而不
21、是彻底放弃那些代码。2.2.2 XMPP协议XMPP是一种基于XML的协议,它继承了在XML环境中灵活的发展性。因此,基于XMPP的应用具有超强的可扩展性。经过扩展以后的XMPP可以通过发送扩展的信息来处理用户的需求,以及在XMPP的顶端建立如内容发布系统和基于地址的服务等应用程 序。而且,XMPP包含了针对服务器端的软件协议,使之能与另一个进行通话,这使得开发者更容易建立客户应用程序或给一个配好系统添加功能。XMPP中定义了三个角色,客户端,服务器,网关。通信能够在这三者的任意两个之间双向发生。服务器同时承担了客户端信息记录,连接管理和信息的路由功能。网关承担着与异构即时通信系统的互联互通,
22、异构系统可以包括SMS(短信),MSN,ICQ等。基本的网络形式是单客户端通过TCP/IP连接到单服务器,然后在之上传输XML。传输的是与即时通讯相关的指令。在以前这些命令要么用2进制的形式发送(比如QQ),要么用纯文本指令加空格加参数加换行苻的方式发送(比如MSN)。而XMPP传输的即时通讯指令的逻辑与以往相仿,只是协议的形式变成了XML格式的纯文本。这不但使得解析容易了,人也容易阅读了,方便了开发和查错。而XMPP的核心部分就是一个在网络上分片断发送XML的流协议。这个流协议是XMPP的即时通讯指令的传递基础,也是一个非常重要的可以被进一步利用的网络基础协议。所以可以说,XMPP用TCP传
23、的是XML流。其实XMPP 是一种很类似于http协议的一种数据传输协议,它的过程就如同“解包装-包装”的过程,用户只需要明白它接受的类型,并理解它返回的类型,就可以很好的利用XMPP来进行数据通讯。图2.1 XMPP工作原理2.2.3 TCP协议和TCP/IP协议TCP:Transmission Control Protocol 传输控制协议TCP是一种面向连接(连接导向)的、可靠的、基于字节流的运输层(Transport layer)通信协议,由IETF的RFC 793说明(specified)。在简化的计算机网络OSI模型中,它完成第四层传输层所指定的功能,UDP是同一层内另一个重要的传
24、输协议。在因特网协议族(Internet protocol suite)中,TCP层是位于IP层之上,应用层之下的运输层。不同主机的应用层之间经常需要可靠的、像管道一样的连接,但是IP层不提供这样的流机制,而是提供不可靠的包交换。 应用层向TCP层发送用于网间传输的、用8位字节表示的数据流,然后TCP把数据流分割成适当长度的报文段(通常受该计算机连接的网络的数据链路层的最大传送单元(MTU)的限制)。之后TCP把结果包传给IP层,由它来通过网络将包传送给接收端实体的TCP层。TCP为了保证不发生丢包,就给每个字节一个序号,同时序号也保证了传送到接收端实体的包的按序接收。然后接收端实体对已成功收
25、到的字节发回一个相应的确认(ACK);如果发送端实体在合理的往返时延(RTT)内未收到确认,那么对应的数据(假设丢失了)将会被重传。TCP用一个校验和函数来检验数据是否有错误;在发送和接收时都要计算校验和。TCP/IP(Transmission Control Protocol/Internet Protocol) 即传输控制协议/网间协议,是一个工业标准的协议集,它是为广域网(WAN)设计的。它是由ARPANET网的研究机构发展起来的。图2.2 面向连接的TCP连接过程2.2.4 Client/Server结构(客户端/服务器模式)(Client/Server或客户/服务器模式):Clien
26、t和Server常常分别处在相距很远的两台计算机上,Client程序的任务是将用户的要求提交给Server程序,再将Server程序返回的结果以特定的形式显示给用户;Server程序的任务是接收客户程序提出的服务请求,进行相应的处理,再将结果返回给客户程序。C/S 结构的基本原则是将计算机应用任务分解成多个子任务,由多台计算机分工完成,即采用“功能分布”原则。客户端完成数据处理,数据表示以及用户接口功能;服务器端完成DBMS的核心功能。这种客户请求服务、服务器提供服务的处理方式是一种新型的计算机应用模式。C/S结构的优点是能充分发挥客户端的处理能力,很多工作可以在客户端处理后再提交给服务器。对
27、应的优点就是客户端响应速度快。缺点主要有以下几个:只适用于局域网。而随着互联网的飞速发展,移动办公和分布式办公越来越普及,这需要我们的系统具有扩展性。这种方式远程访问需要专门的技术,同时要对系统进行专门的设计来处理分布式的数据。 客户端需要安装专用的客户端软件。首先涉及到安装的工作量,其次任何一台电脑出问题,如病毒、硬件损坏,都需要进行安装或维护。特别是有很多分部或专卖店的情况,不是工作量的问题,而是路程的问题。还有,系统软件升级时,每一台客户机需要重新安装,其维护和升级成本非常高。 对客户端的操作系统一般也会有限制。可能适应于Win98, 但不能用于win2000或Windows XP。或者
28、不适用于微软新的操作系统等等,更不用说Linux、Unix等。3 系统分析与设计3.1 需求分析 此次开发的网络聊天工具可作为企业局域网的交流工具使用,通信的安全性不是很高,但要求信息的响应速度要较快,让用户充分享受到网络即时消息的方便和快捷。本聊天工具由服务器端程序和客户端程序两部分组成,整体采用.NET平台开发,采用用TCP/IP通信协议,使用XML对通信报文进行封装,以便于应用程序API调用,组装和解析XML报文。服务器是可以进行监听,记录客户端请求和验证客户端身份的合法性,并提供XML消息中转服务;客户端程序面向实际用户,它有必要的界面的按钮,向用户提供网络即时消息的功能。本聊天系统需
29、包含如下基本功能:1.客户端:l 用户登陆验证; l 获取好友列表并显示好友状态(在线/不在线);l 用户与好友聊天;l 会议室聊天l 文件传输2.服务端:l 启动和关闭后台服务器;l 查看客户端登录的相关信息(客户端登陆时间/登陆IP);l 转发所有用户之间的消息。3.2系统总体框架3.2.1总体设计网络即时通讯系统采用客户机/服务器(C/S)的模式来设计,是一个2层的C/S结构:应用程序服务器端应用程序客户端。系统采用C/S结构,可以将任务合理分配到客户机端和服务器端,从而降低了系统的通信开销,如图3.1所示:图3.1 C/S体系结构 1客户层客户层也叫应用层,是应用程序的用户接口部分。给
30、聊天工具设计一个客户层具有很多优点,这是因为客户层担负着用户与应用间的对话功能。它用于检查用户的输入数据,显示应用的输出数据。为了使用户能直观地进行操作,客户层需要合作图形用户接口。若聊天用户变更,系统只需要改写显示控制和数据检查程序即可,而不影响其他两层。数据检查的内容限于数据的形式和值的范围,不包括有关业务本身的处理逻辑。2服务层服务层也叫功能层,相当于应用的本体,它是将具体的业务处理逻辑编入程序中。例如,用户需要检索数据,系统设法将有关检索要求的信息一次性地传送给功能层;而用户登录后,聊天登录信息是由功能层处理过的检索结果数据,它也是一次性传送给表示层的。在应用设计中,必须避免表示层和功
31、能层之间进行多次的数据交换,这就需要尽可能进行一次性的业务处理,达到优化整体设计的目的。3.2.2功能模块聊天工具按如下过程完成通信:l 客户向服务器注册,告知服务器它在监听某主题;l 客户注册之后,向服务器发送消息;l 服务器再把消息发送给所有监听这些主题的客户。聊天工具由服务器端和客户端组成,要分析清楚两方面所要完成的任务,对设计来说,等于完成了一半。根据聊天的通信步骤,系统的功能模块如图3.2所示:用户登录用户管理查看用户信息单人聊天聊天功能客户端即时聊天通讯会议室聊天文件传输用户注册建立连接服务器端监听客户请求后台操作消息管理图3.2 功能模块1.服务器端服务器完成4大功能:用户注册、
32、建立连接、监听客户请求、消息管理这4大功能的具体含义如下:用户注册:客户在服务器上注册新用户,并把新用户的资料写进数据库;建立连接:系统启动时建立连接,绑定本地计算机的一个端口,不断侦听是否有客户端连接或者断开连接;监听客户请求:服务器端是一个信息的枢纽,所有客户端的信息都要传到服务器端,再由服务器根据要求分发出去,客户端在向服务器发送各种请求,如:上线、获取我的好友等等;消息管理:在服务器端的界面上,我们可以看到用户的登录消息,包括IP地址、端口号,登录时间等。同时,服务器还承担着转发客户之间消息的功2.客户端客户端完成3大功能:用户管理、聊天功能和文件传输,这些功能的含义如下:用户管理:此
33、功能又包括2个子功能,用户登录和用户查看用户信息。客户端与服务器建立通信通道,接收来自服务器的监听。通过系统的登录界面,输入账号和密码,然后发送到服务器进行验证。如果验证通过,则打开程序的主界面。聊天功能:聊天功能包括单人聊天和会议室聊天功能。单人聊天就是客户在与好友建立通信连接后,便可以与好友进行单人聊天,聊天时发送的是文本信息,好友端在接收到聊天消息后,系统会自动弹出聊天界面。会议室聊天既是一个用户建立一个会议室,所有在线的用户能看到这个会议室并加入会议室中进行多人聊天。文件传输:用户之间进行通过P2P连接来实现文件共享 3.3 系统详细设计3.3.1多线程设计1.服务器端的多线程服务器需
34、要和多个客户端同时进行通信,这就是服务器端的多线程。一旦服务器发现一个新的客户端与之建立了连接,就马上新建一个线程与客户端进行通信。用多线程的好处在于可以同时处理多个通信连接,不会出于由于数据排队而发生的延迟或者丢失,可以很好利用系统的性能。线程监听代码如下:ThreadStart myThreadDelegate = new ThreadStart(Listen); myThread = new Thread(myThreadDelegate);myThread.Start();2.客户端的多线程客户端能够完成信息的接收和发送操作,这与服务器的多线程概念不同,可以采用循环等待的方法来实现客户
35、端。利用循环等待的方式,客户端首先接收用户输入的内容并将它们发送到服务器端,然后接收来自服务器端的信息,将其返回给客户端的用户。用户端线程监听代码如下:Thread mythread = new Thread(connect); mythread.Start();3.3.2 数据库的设计本设计模拟的企业局域网架构,所以数据库表主要用来存放部门信息和用户的注册信息,可利用两张表来分别存放部门信息和用户信息,用户可通过服务器来查看在线用户的个人信息。1. group表:用来存放部门信息;图3.3 部门信息表2. user表:用来存放用户的注册信息;图3.4 用户注册信息3.3.3服务器的设计主服务
36、器实现了服务器的多线程,服务器端有一个进程(或多个进程)在指定的端口等待客户的连接信息。一时连接成功,就可以按设计的数据交换方法和格式进行数据传输。客户端只在需要的时候向服务端发出连接请求。主服务器中设计了一个XmppServerConnection.cs类,用来定义XMPP的服务器端的连接。serverfrm.cs用来定义程序的主窗口,在主窗口中:使用IPEndPoint localEndPoint = new IPEndPoint(ipAddress, 9000)语句绑定9000监听窗口;使用listener = new Socket(AddressFamily.InterNetwork,
37、 SocketType.Stream, ProtocolType.Tcp)监听用户请求;使用ThreadStart myThreadDelegate = new ThreadStart(Listen)语句创建新线程;1. 服务器的主窗口:图3.5 服务器主窗口系统服务器的初始界面如图3.5所示,服务器打开后自动运行,在在线用户下记录当前登入服务器的所有用户,包括用户名,IP地址和登录端口;在DEBUG中可以查看到用户发送的XML报文。程序的最下端可以看到当前的服务器地址和监听的端口号。2. 用户的注册:用户在服务器进行注册,注册页面如下:图3.6 用户注册页面在用户注册页面中,可以添加新部门,
38、也可以在已有部门中注册,用户注册信息包括姓名,密码,头像(系统使用的头像存在.dll中),性别,年龄,所属部门,电话,E-mail。如果用户有信息注册错误,同时提供修改功能。部门和用户的注册信息存进系统的数据库中,在服务器的user.cs类中,使用语句:private void add_group(string str_group) groupTableAdapter.Insert(str_group); groupTableAdapter.Update(databaseDataSet.group); string query = String.Format(insert into group
39、(group) values(0), str_group); util.executeQuery(query); this.fillComboBox(); 将注册的部门信息写入数据库的表group中。用户注册和修改方法雷同,用户的信息写入数据库中的表user中。3. 登陆认证登陆认证服务是对试图登陆的客户端进行权限验证。验证过程为:服务器获得客户端发送来的用户名和密码,然后查询数据库的相应的用户列表,如果该用户不存在或用户名与密码不匹配服务器将验证失败的结果通过XMPP协议发还给客户端,验证过程终止。如果验证通过,登陆验证服务会将哈希表中的用户状态由离线变为在线,然后将验证成功的结果发还给客户
40、端。登录认证的流程如下:图3.7 用户登陆流程图在服务器的DEBUG中可以看到用户登陆时的一些XMPP数据:C:客户询问服务器登陆需要提供的信息aaaS:服务器提示客户登陆所需要的信息aaaC:客户发送当前状态给服务器表明其在线chat5C:客户请求发送好友列表信息S:服务器返回好友列表0销售部23开发部1开发部4销售部21销售部21工会当用户登陆到服务器以后,状态显示为在线。此时服务器向用户的好友列表发送载有相应信息的XML流:chat3.3.4 客户端的设计1. 用户登陆用户登陆界面如下图:图3.8 用户登陆界面用户完成登录后, 客户端与服务器端建立连接。连接建立成功后,客户向服务器请求读
41、取好友名单;服务器收到该请求,开始读取数据库读取好友资料,向客户端发送这些信息;客户收到服务器消息后,在主窗口显示好友。主窗口界面如下图所示:图3.9 用户操作界面客户可以在客户端查看好友信息,客户端向服务器发送查询好友信息的请求,然后服务器查询数据库,接着将查询得到的结果组合成XMPP协议的XML流返回给客户端。图3.10 查询好友信息流程图2. 服务器连接服务器连接是在login.cs类中实现的,通过调用XMPP组件中的socket实现与服务器联通。根据服务器的IP地址和端口来完成客户端与服务器的连接。IP地址是网络中唯一地址的标识。服务器连接过程分服务器端与客户端两部分,执行流程如下:(
42、1)服务器程序流程l l 程序初始化;l l 填写本机地址信息;l l 绑定并监听一个固定的端口;l l 收到Client的连接后建立一个Socket连接;l l 产生一个新的进程与Client进行通信和信息处理;l l 子通信结束后中断与Client的连接。(2)客户端程序流程:l l 程序初始化;l l 填写服务器地址消息;l l 连接服务器;l l 与服务器通信和信息处理;l l 通信结束后断开连接。3.3.5 文本通信功能设计1. 一对一的文本通信在本设计中文本通信功能采用由服务器中转,考虑到客户在登陆系统时就跟服务器建立了TCP连接,而且在整个系统使用中客户与服务器之间除了一些必要的控制信息及好友查询等信息要进行通信外,TCP连接是处于空闲状态的,所以可以利用服务器中转完成客户间的文本通信。单人聊天界面如下图:图3.11 单人聊天界面在Frmchat.cs中,将用户的信息解析成XML报文,其代码如下:agsXMPP.protocol.client.Message msg = new agsXMPP.protocol.client.Message(); msg.To = new Jid(name, localhost, resourse); msg.Type =