![[计算机]即时通讯系统毕业论文.doc_第1页](http://file.renrendoc.com/FileRoot1/2019-1/10/fb8d525a-1b4f-43ca-81df-cbbabb53945d/fb8d525a-1b4f-43ca-81df-cbbabb53945d1.gif)
![[计算机]即时通讯系统毕业论文.doc_第2页](http://file.renrendoc.com/FileRoot1/2019-1/10/fb8d525a-1b4f-43ca-81df-cbbabb53945d/fb8d525a-1b4f-43ca-81df-cbbabb53945d2.gif)
![[计算机]即时通讯系统毕业论文.doc_第3页](http://file.renrendoc.com/FileRoot1/2019-1/10/fb8d525a-1b4f-43ca-81df-cbbabb53945d/fb8d525a-1b4f-43ca-81df-cbbabb53945d3.gif)
![[计算机]即时通讯系统毕业论文.doc_第4页](http://file.renrendoc.com/FileRoot1/2019-1/10/fb8d525a-1b4f-43ca-81df-cbbabb53945d/fb8d525a-1b4f-43ca-81df-cbbabb53945d4.gif)
![[计算机]即时通讯系统毕业论文.doc_第5页](http://file.renrendoc.com/FileRoot1/2019-1/10/fb8d525a-1b4f-43ca-81df-cbbabb53945d/fb8d525a-1b4f-43ca-81df-cbbabb53945d5.gif)
已阅读5页,还剩28页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
分类号:分类号:TP311.1TP311.1 U U D D C C:D10621-408-(2011)2301-0D10621-408-(2011)2301-0 密密 级:公级:公 开开 编编 号:号:20071210042007121004 即时通讯软件设计与实现即时通讯软件设计与实现 论文作者姓名:论文作者姓名:孟勤孟勤 申请学位专业:申请学位专业:网络工程网络工程 申请学位类别:申请学位类别:工学学士工学学士 指指导导教教师师姓姓名名(职职称称) : 韩斌(副教授)韩斌(副教授) 论文提交日期:论文提交日期: 20112011 年年 6 6 月月 1010 日日 即时通讯软件设计与实现即时通讯软件设计与实现 摘摘 要要 网络通讯是目前计算机用户进行交流最普遍的方式,各种各样的聊天软件 也层出不穷;服务提供商也提供了越来越丰富的通讯服务功能。当前中国的互 联网技术已经进入了一个飞速发展的时期,即时通讯工具作为当今网络应用的 主流,越来越受到了人们的青睐,使人们的网上生活更加丰富多彩。当今使用 最为广泛的即时通信工具,比如腾讯公司的 QQ 聊天软件。本毕业设计就是模拟 QQ 聊天软件,开发一个包括文字聊天、文件传输等功能的聊天软件。 系统采用 C/S 架构,基于.NET 平台开发。由服务器端和客户端程序组成。 采用 TCP/IP 通信协议,使用 XML 对通信报文进行封装,便于应用程序 API 调用, 组装,解析 XML 报文。主要实现的是聊天软件的部分功能,即文字聊天、文件 传输等功能,主要完成的任务包括服务器模块的设计、文字聊天和文件传输等 功能。通过运行、测试与分析,该多功能聊天软件运行稳定、可靠,具有一定 的实用价值。 关键词关键词:聊天软件;文字聊天;文件传输;C#;XML 报文 The Design and Implementation of Instant Messaging Software Abstract Network 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 development, 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 simulate 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 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, the 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 引言1 1.1 课题背景1 1.2 国内外研究现状1 1.3 本课题研究的意义2 1.4 本课题的主要工作2 2 系统开发环境和关键技术2 2.1 开发环境2 2.1.1 硬件环境:2 2.1.2 软件环境3 2.2 关键技术3 2.2.1 C#语言简介3 2.2.2 XMPP 协议 .4 2.2.3 TCP 协议和 TCP/IP 协议 .5 2.2.4 Client/Server 结构(客户端/服务器模式) .6 3 系统分析与设计7 3.1 需求分析7 3.2 系统总体框架 7 3.2.1 总体设计 7 3.2.2 功能模块 8 3.3 系统详细设计.10 3.3.1 多线程设计 .10 3.3.2 数据库的设计.10 3.3.3 服务器的设计 .11 3.3.4 客户端的设计.15 3.3.5 文本通信功能设计.17 3.3.6 文件传输.19 4 系统测试.22 结 论.25 参考文献.26 致 谢.27 声 明.28 第 0 页 共 28 页 1 1 引言引言 1.11.1 课题背景课题背景 在网络无所不在的今天,在 Internet 上,有 ICQ、MSN、Gtalk、OICQ 等网 络聊天软件,极大程度上方便了处于在世界各地的友人之间的相互联系,也使 世界好像一下子缩小了,不管你在哪里,只要你上了网,打开这些软件,就可 以给你的朋友发送信息,不管对方是否也同时在线,只要知道他有号码。 随着互联网应用越来越丰富,以快速、交互、简便为代表的即时通讯工具, 已经成为当前网络用户最喜爱的网络沟通工具。聊天软件作为当今使用最为广 泛的即时性通信工具之一,给互联网上的用户提供了诸多的服务,如文字聊天、 文件传输、语音聊天、视频聊天等功能。作为即时通讯工具最具增长潜力之一 的聊天软件,不仅在基础应用方面,还是产品扩展应用方面都将有质的飞跃, 它为满足人们的需要,将其功能不断的完善。随着聊天软件功能的不断完善, 用户通过聊天软件在互联网上尽情的交谈,不但可以文字聊天和文件传输,还 可以通过语音、视频来聊天。在今后随着互联网技术的发展,聊天软件也在以 前所未有的速度改变着人们的生活方式,它必定会成为人们网络生活不可缺少 的一部分。 1.21.2 国内外研究现状国内外研究现状 1996 年 11 月 ICQ 在全球发布,拉开了互联网 IM(Instant Messenger,即 时通讯)应用的序幕。就是这样一款小软件在短短数年时间里发展出一个巨大 的 IM 产业。 时至今日,即时性通讯工具早已成为最热门的网络应用之一。国内外的聊 天工具举不胜数。ICQ 作为全球第一款即时性通讯工具,在经过短短数年的发 展,其行业内的地位如今已是无人能够撼动。ICQ 名字取自英文“I seek you”的谐音,即是“我找你”的意思。最初的 ICQ 只有两个特性,即用户列表 和即时聊天。但一经推出就受到众多网民的喜爱,6 个月内其注册用户迅速攀 升至 85 万,1998 年它的用户数量更是翻了 10 数倍,达到了 1200 万人。ICQ 的 迅猛发展也让当时的互联网领头羊 Yahoo 和在桌面软件领域独步天下的微软嗅 到了商机,它们分别推出了 Yahoo Messenger、MSN Messenger 和昙花一现的 MS Chat。即时通讯市场雏形顿显,有了国际互联网巨头和最大软件公司的融入, 即时通讯时代的大幕就此徐徐拉开。 当 ICQ 风行全球的时候,在国内各种仿 ICQ 的中文 IM 软件也纷纷推出,时 至今日,占据国内的市场的主要是腾讯公司的 QQ、微软的 MSN、雅虎的雅虎通 等。其中腾讯公司的 QQ 以占据了国内 70%以上的市场。 随着 IM 应用的深入,其功能早已超越了初期的即时文字聊天。表情图标早 第 1 页 共 28 页 已成为各个 IM 软件的标准功能,文件传输、语音/视频聊天、游戏、网上交友 等高级功能也正越来越多地被集成进入 IM 应用。事实表明,现在的 IM 已不再 是一个简单的沟通工具,而是一个信息资讯、交流互动、休闲娱乐中心,IM 平 台上的语音、视频、音乐点播、信息共享等新应用层出不穷。发展到现在,IM 软件越来越成熟,IM 产业链也已经形成,已经成为现代人和现代经济中不可或 缺的一部份,相信未来 IM 软件的道路会更加宽广和精彩。 1.31.3 本课题研究的意义本课题研究的意义 21 世纪是信息的时代,随着互联网技术的发展,信息在传递方面也有了崭 新的一面。现今聊天软件成为信息传递最为广泛的应用工具,它发挥了即时性 通信的特点,可以让用户在第一时间内得到信息的交流,它不仅可以让用户进 行文字聊天,而且还增添语音、视频功能。这样可以让网上的好友身临其境的 面对面的聊天,让彼此之间更为深入的了解。人性化的设计让每个用户都可以 得心应手的使用,从而获得更多人的青睐。Internet 的出现连通了整个世界, 而聊天软件的出现则连通了每一位网上的用户。随着网络应用的发展,聊天软 件已经成为最热门的网络应用之一。经历了近几年突飞猛进的发展之后,即时 通讯工具早已不再是简单的互联网通讯工具,它已经成为一个集互动交流、休 闲娱乐、信息管理为一体的多元化互联网应用平台。总之,聊天软件的出现给 人们彼此之间的沟通带来了无比的方便,人们可以通过聊天软件建立深刻的友 情,让人们在互联网上的交流更加充满活力与生机。 1.41.4 本课题的本课题的主要工作主要工作 聊天软件作为使用最为广泛的即时性通讯工具,它在拥有文字聊天基础功 能的同时,为满足用户的需求,还增加了文件传输的功能,成为现在最为主流 的网上应用软件。本论文主要对聊天软件的文字聊天、文件传输功能进行分析 与研究,总结出实现的相关理论与知识。 2 2系统开发环境和关键技术系统开发环境和关键技术 2.1 开发环境开发环境 本设计是一个局域网即时通讯软件,要在短时间内开发出来并且满足客户 要求,无论是硬件还是软件都要选择合适,要求如下:开发设备完善;开发机 器的性能必须稳定;操作系统的选择应该适当;开发出的程序可以在尽可能多 的平台上运行;要求运行机配置尽可能抵挡。对此,我选择的硬件环境和软件 环境如下: .1 硬件环境:硬件环境: 处理器:Intel Pentium PIII 或者更高的处理器 第 2 页 共 28 页 内存:256MB 或更高 网络:局域网 .2 软件环境软件环境 操作系统:Windows XP/Windows 7 开发平台: Microsoft Visual Studio 2008 开发语言:C# 2.2 关键技术关键技术 .1 C#C#语言简介语言简介 C#是一种最新的、面向对象的编程语言。它使得程序员可以快速地编写各 种基于 Microsoft .NET 平台的应用程序,Microsoft .NET 提供了一系列的工 具和服务来最大程度地开发利用计算与通讯领域。 正是由于 C#面向对象的卓越设计,使它成为构建各类组件的理想之选 无论是高级的商业对象还是系统级的应用程序。使用简单的 C#语言结构,这些 组件可以方便的转化为 XML 网络服务,从而使它们可以由任何语言在任何操作 系统上通过 Internet 进行调用。 最重要的是,C#使得 C+程序员可以高效的开发程序,而绝不损失 C/C+原 有的强大的功能。因为这种继承关系,C#与 C/C+具有极大的相似性,熟悉类 似语言的开发者可以很快的转向 C#。 效率与安全性 新兴的网络经济迫使商务企业必须更加迅速的应对竞争的威胁。开发者必 须不断缩短开发周期,不断推出应用程序的新版本,而不仅仅是开发一个“标 志性”的版本。C#在设计时就考虑了这些问题。它使开发者用更少的代码做更 多的事,同时也不易出错。 支持现有的网络编程新标准 C#程序员可以在 Microsoft .NET 平台上事半功倍的构建应用程序的扩展框 架。C#包含了内置的特性,使任何组件可以轻松转化为 XML 网络服务,通过 Internet 被任何操作系统上运行的任何程序调用。 更突出的是,XML 网络服务框架可以使现有的 XML 网络服务对程序员来说 就和 C#对象一样。这样,程序员就可以方便地使用他们已有的面向对象的编程 技巧来开发利用现有的 XML 网络服务。 消除大量程序错误 C#的现代化设计能够消除很多常见的 C+编程错误。 例如:资源回收减轻 了程序员内存管理的负担;C#中变量由环境自动初始化;变量是类型安全的; 这样,程序员编写与维护那些解决复杂商业问题的程序就更方便了;对版本的 第 3 页 共 28 页 更新提供内在的支持降低了开发成本 更新软件组件是一项很容易出错的工作,因为代码的修改可能无意间改变 原有程序的语义。为协助开发者进行这项工作,C#为版本的更新提供内在的支 持。例如,方法重载必须显式声明。这样可以防止编码错误,保证版本更新的 灵活性。还有一个相关的特性就是对接口和接口继承的内在支持。这些特性使 得 C#可以开发复杂的框架并且随着时间不断发展更新它。 C#语言允许类型定义的,扩展的元数据。 这些元数据可以应用于任何对象。项目构建者可以定义领域特有的属性并 把他们应用于任何语言元素-类,接口等等。然后,开发人员可以编程检查每个 元素的属性。这样,很多工作都变得方便多了,比如编写一个小工具来自动检 查每个类或接口是否被正确定义为某个抽象商业对象的一部分,或者只是创建 一份基于对象的领域特有属性的报表。定制的元数据和程序代码之间的紧密对 应有助于加强程序的预期行为和实际实现的之间的对应关系。 扩展交互性 作为一种自动管理的,类型安全的环境,C#适合于大多数企业应用程序。 但实际的经验表明有些应用程序仍然需要一些底层的代码,要么是因为基于性 能的考虑,要么是因为要与现有的应用程序接口兼容。这些情况可能会迫使开 发者使用 C+, 即使他们本身宁愿使用更高效的开发环境。 C#采用以下对策来解决这一问题:内置对组建对象模型(COM)和基于 Windows 的 API 的支持;允许有限制地使用纯指针(Native Pointer)。 在 C#中,每个对象都自动生成为一个 COM 对象。开发者不再需要显式的实 现 IUnknown 和其他 COM 接口这些功能都是内置的类似的,#可以调用现 有的 COM 对象,无论它是由什么语言编写的。 C#包含了一个特殊的功能,使程序可以调用任何纯 API。在一段特别标记 的代码中,开发者可以使用指针和传统 C/C+特性,如手工的内存管理和指针 运算。这是其相对于其它环境的极大优势。这意味着 C#程序员可以在原有的 C/C+代码的基础上编写程序,而不是彻底放弃那些代码。 .2 XMPPXMPP 协议协议 XMPP 是一种基于 XML 的协议,它继承了在 XML 环境中灵活的发展性。因此, 基于 XMPP 的应用具有超强的可扩展性。经过扩展以后的 XMPP 可以通过发送扩 展的信息来处理用户的需求,以及在 XMPP 的顶端建立如内容发布系统和基于地 址的服务等应用程 序。而且,XMPP 包含了针对服务器端的软件协议,使之能 与另一个进行通话,这使得开发者更容易建立客户应用程序或给一个配好系统 添加功能。 第 4 页 共 28 页 XMPP 中定义了三个角色,客户端,服务器,网关。通信能够在这三者的 任意两个之间双向发生。服务器同时承担了客户端信息记录,连接管理和信 息的路由功能。网关承担着与异构即时通信系统的互联互通,异构系统可以 包括 SMS(短信) ,MSN,ICQ 等。基本的网络形式是单客户端通过TCP/IP 连接到单服务器,然后在之上传输 XML。 传输的是与即时通讯相关的指令。在以前这些命令要么用2 进制的形 式发送(比如 QQ) ,要么用纯文本指令加空格加参数加换行苻的方式发送 (比如 MSN) 。而 XMPP 传输的即时通讯指令的逻辑与以往相仿,只是协议的 形式变成了 XML 格式的纯文本。这不但使得解析容易了,人也容易阅读了, 方便了开发和查错。而 XMPP 的核心部分就是一个在网络上分片断发送XML 的流协议。这个流协议是 XMPP 的即时通讯指令的传递基础,也是一个非常 重要的可以被进一步利用的网络基础协议。所以可以说,XMPP 用 TCP 传的 是 XML 流。 其实 XMPP 是一种很类似于 http 协议的一种数据传输协议,它的过程 就如同“解包装-包装”的过程,用户只需要明白它接受的类型,并理解 它返回的类型,就可以很好的利用 XMPP 来进行数据通讯。 图 2.1 XMPP 工作原理 .3 TCPTCP 协议和协议和 TCP/IPTCP/IP 协议协议 TCP:Transmission Control Protocol 传输控制协议 TCP 是一种面向连接 (连接导向)的、可靠的、基于字节流的运输层(Transport layer)通信协议, 由 IETF 的 RFC 793 说明(specified)。在简化的计算机网络 OSI 模型中,它 完成第四层传输层所指定的功能,UDP 是同一层内另一个重要的传输协议。 在因特网协议族(Internet protocol suite)中,TCP 层是位于 IP 层之 上,应用层之下的运输层。不同主机的应用层之间经常需要可靠的、像管道一 第 5 页 共 28 页 样的连接,但是 IP 层不提供这样的流机制,而是提供不可靠的包交换。 应用层向 TCP 层发送用于网间传输的、用 8 位字节表示的数据流,然后 TCP 把 数据流分割成适当长度的报文段(通常受该计算机连接的网络的数据链路层的 最大传送单元(MTU)的限制) 。之后 TCP 把结果包传给 IP 层,由它来通过网络将 包传送给接收端实体的 TCP 层。TCP 为了保证不发生丢包,就给每个字节一个 序号,同时序号也保证了传送到接收端实体的包的按序接收。然后接收端实体 对已成功收到的字节发回一个相应的确认(ACK);如果发送端实体在合理的往返 时延(RTT)内未收到确认,那么对应的数据(假设丢失了)将会被重传。TCP 用 一个校验和函数来检验数据是否有错误;在发送和接收时都要计算校验和。 TCP/IP(Transmission Control Protocol/Internet Protocol) 即传输控 制协议/网间协议,是一个工业标准的协议集,它是为广域网(WAN)设计的。它是 由 ARPANET 网的研究机构发展起来的。 图 2.2 面向连接的 TCP 连接过程 .4 Client/ServerClient/Server 结构(客户端结构(客户端/ /服务器模式)服务器模式) (Client/Server 或客户/服务器模式): Client 和 Server 常常分别 处在相距很远的两台计算机上, Client 程序的任务是将用户的要求提交给 Server 程序,再将 Server 程序返回的结果以特定的形式显示给用户; Server 程序的任务是接收客户程序提出的服务请求,进行相应的处理,再将 结果返回给客户程序。 C/S 结构的基本原则是将计算机应用任务分解成多个子任务,由多台计 算机分工完成,即采用 “功能分布”原则。客户端完成数据处理,数据表示 以及用户接口功能;服务器端完成 DBMS 的核心功能。这种客户请求服务、 服务器提供服务的处理方式是一种新型的计算机应用模式。 Sokect bind listen accpet Recv send close socket connect send recv close 阻塞等待客户连接建立连接 请求数据 应答数据 服务器 客户端 第 6 页 共 28 页 C/S 结构的优点是能充分发挥客户端的处理能力,很多工作可以在客 户端处理后再提交给服务器。对应的优点就是客户端响应速度快。缺点主要有 以下几个:只适用于局域网。而随着互联网的飞速发展,移动办公和分布式办 公越来越普及,这需要我们的系统具有扩展性。这种方式远程访问需要专门的 技术,同时要对系统进行专门的设计来处理分布式的数据。 客户端需要安 装专用的客户端软件。首先涉及到安装的工作量,其次任何一台电脑出问题, 如病毒、硬件损坏,都需要进行安装或维护。特别是有很多分部或专卖店的情 况,不是工作量的问题,而是路程的问题。还有,系统软件升级时,每一台客 户机需要重新安装,其维护和升级成本非常高。 对客户端的操作系统一般 也会有限制。可能适应于 Win98, 但不能用于 win2000 或 Windows XP。或者不 适用于微软新的操作系统等等,更不用说 Linux、Unix 等。 3 3 系统分析与设计系统分析与设计 3.13.1 需求分析需求分析 此次开发的网络聊天工具可作为企业局域网的交流工具使用,通信的安全 性不是很高,但要求信息的响应速度要较快,让用户充分享受到网络即时消息 的方便和快捷。本聊天工具由服务器端程序和客户端程序两部分组成,整体采 用.NET 平台开发,采用用 TCP/IP 通信协议,使用 XML 对通信报文进行封装, 以便于应用程序 API 调用,组装和解析 XML 报文。服务器是可以进行监听,记 录客户端请求和验证客户端身份的合法性,并提供 XML 消息中转服务;客户端 程序面向实际用户,它有必要的界面的按钮,向用户提供网络即时消息的功能。 本聊天系统需包含如下基本功能: 1.客户端: 用户登陆验证; 获取好友列表并显示好友状态(在线/不在线) ; 用户与好友聊天; 会议室聊天 文件传输 2.服务端: 启动和关闭后台服务器; 查看客户端登录的相关信息(客户端登陆时间/登陆 IP) ; 转发所有用户之间的消息。 3.23.2 系统总体框架系统总体框架 第 7 页 共 28 页 .1 总体设计总体设计 网络即时通讯系统采用客户机/服务器(C/S)的模式来设计,是一个 2 层 的 C/S 结构:应用程序服务器端应用程序客户端。系统采用 C/S 结构,可以 将任务合理分配到客户机端和服务器端,从而降低了系统的通信开销,如图 3.1 所示: 图 3.1 C/S 体系结构 1客户层 客户层也叫应用层,是应用程序的用户接口部分。给聊天工具设计一个客 户层具有很多优点,这是因为客户层担负着用户与应用间的对话功能。它用于 检查用户的输入数据,显示应用的输出数据。为了使用户能直观地进行操作, 客户层需要合作图形用户接口。若聊天用户变更,系统只需要改写显示控制和 数据检查程序即可,而不影响其他两层。数据检查的内容限于数据的形式和值 的范围,不包括有关业务本身的处理逻辑。 2服务层 服务层也叫功能层,相当于应用的本体,它是将具体的业务处理逻辑编入 程序中。例如,用户需要检索数据,系统设法将有关检索要求的信息一次性地 传送给功能层;而用户登录后,聊天登录信息是由功能层处理过的检索结果数据, 它也是一次性传送给表示层的。在应用设计中,必须避免表示层和功能层之间 进行多次的数据交换,这就需要尽可能进行一次性的业务处理,达到优化整体 设计的目的。 .2 功能模块功能模块 聊天工具按如下过程完成通信: 客户向服务器注册,告知服务器它在监听某主题; 显示逻 辑 客户事 务处理 数据处理 逻辑 数据库 客客户户机机服服务务器器 请求 响应 第 8 页 共 28 页 客户注册之后,向服务器发送消息; 服务器再把消息发送给所有监听这些主题的客户。 聊天工具由服务器端和客户端组成,要分析清楚两方面所要完成的任务, 对设计来说,等于完成了一半。根据聊天的通信步骤,系统的功能模块如图 3.2 所示: 图 3.2 功能模块 1.服务器端 服务器完成 4 大功能:用户注册、建立连接、监听客户请求、消息管理这 4 大功能的具体含义如下: 用户注册:客户在服务器上注册新用户,并把新用户的资料写进数据库; 建立连接:系统启动时建立连接,绑定本地计算机的一个端口,不断侦听 是否有客户端连接或者断开连接; 监听客户请求:服务器端是一个信息的枢纽,所有客户端的信息都要传到 服务器端,再由服务器根据要求分发出去,客户端在向服务器发送各种请求, 如:上线、获取我的好友等等; 消息管理:在服务器端的界面上,我们可以看到用户的登录消息,包括 IP 地址、端口号,登录时间等。同时,服务器还承担着转发客户之间消息的功 2.客户端 客户端完成 3 大功能:用户管理、聊天功能和文件传输,这些功能的含义 如下: 即 时 聊 天 通 讯 客户端 服务器端 用户管理 聊天功能 文件传输 用户登录 查看用户信息 单人聊天 会议室聊天 用户注册 后台操作 建立连接 监听客户请求 消息管理 第 9 页 共 28 页 用户管理:此功能又包括 2 个子功能,用户登录和用户查看用户信息。客 户端与服务器建立通信通道,接收来自服务器的监听。通过系统的登录界面, 输入账号和密码,然后发送到服务器进行验证。如果验证通过,则打开程序的 主界面。 聊天功能:聊天功能包括单人聊天和会议室聊天功能。单人聊天就是客户 在与好友建立通信连接后,便可以与好友进行单人聊天,聊天时发送的是文本 信息,好友端在接收到聊天消息后,系统会自动弹出聊天界面。会议室聊天既 是一个用户建立一个会议室,所有在线的用户能看到这个会议室并加入会议室 中进行多人聊天。 文件传输:用户之间进行通过 P2P 连接来实现文件共享 3.33.3 系统详细设计系统详细设计 .1 多线程设计多线程设计 1.服务器端的多线程 服务器需要和多个客户端同时进行通信,这就是服务器端的多线程。一旦 服务器发现一个新的客户端与之建立了连接,就马上新建一个线程与客户端进 行通信。用多线程的好处在于可以同时处理多个通信连接,不会出于由于数据 排队而发生的延迟或者丢失,可以很好利用系统的性能。线程监听代码如下: ThreadStart myThreadDelegate = new ThreadStart(Listen); myThread = new Thread(myThreadDelegate); myThread.Start(); 2.客户端的多线程 客户端能够完成信息的接收和发送操作,这与服务器的多线程概念不同, 可以采用循环等待的方法来实现客户端。利用循环等待的方式,客户端首先接 收用户输入的内容并将它们发送到服务器端,然后接收来自服务器端的信息, 将其返回给客户端的用户。用户端线程监听代码如下: Thread mythread = new Thread(connect); mythread.Start(); .2 数据库的设计数据库的设计 本设计模拟的企业局域网架构,所以数据库表主要用来存放部门信息和用 户的注册信息,可利用两张表来分别存放部门信息和用户信息,用户可通过服 务器来查看在线用户的个人信息。 1. group 表:用来存放部门信息; 第 10 页 共 28 页 图 3.3 部门信息表 2. user 表:用来存放用户的注册信息; 图 3.4 用户注册信息 .3 服务器的设计服务器的设计 主服务器实现了服务器的多线程,服务器端有一个进程(或多个进程)在 指定的端口等待客户的连接信息。一时连接成功,就可以按设计的数据交换方 法和格式进行数据传输。客户端只在需要的时候向服务端发出连接请求。主服 务器中设计了一个 XmppServerConnection.cs 类,用来定义 XMPP 的服务器端的 连接。serverfrm.cs 用来定义程序的主窗口,在主窗口中: 使用 IPEndPoint localEndPoint = new IPEndPoint(ipAddress, 9000)语句绑定 9000 监听窗口; 使用 listener = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)监听用户请求; 使用 ThreadStart myThreadDelegate = new ThreadStart(Listen)语句创建新线 程; 1. 服务器的主窗口: 第 11 页 共 28 页 图 3.5 服务器主窗口 系统服务器的初始界面如图 3.5 所示,服务器打开后自动运行,在在线用 户下记录当前登入服务器的所有用户,包括用户名,IP 地址和登录端口;在 DEBUG 中可以查看到用户发送的 XML 报文。程序的最下端可以看到当前的服务 器地址和监听的端口号。 2. 用户的注册: 用户在服务器进行注册,注册页面如下: 图 3.6 用户注册页面 在用户注册页面中,可以添加新部门,也可以在已有部门中注册,用户注 册信息包括姓名,密码,头像(系统使用的头像存在.dll中) ,性别,年龄,所 属部门,电话,E-mail。如果用户有信息注册错误,同时提供修改功能。 部门和用户的注册信息存进系统的数据库中,在服务器的user.cs类中,使 第 12 页 共 28 页 用语句: private void add_group(string str_group) groupTableAdapter.Insert(str_group); groupTableAdapter.Update(databaseDataSet.group); string query = String.Format(“insert into group(group) values(0)“, str_group); util.executeQuery(query); this.fillComboBox(); 将注册的部门信息写入数据库的表 group 中。用户注册和修改方法雷同, 用户的信息写入数据库中的表 user 中。 3. 登陆认证 登陆认证服务是对试图登陆的客户端进行权限验证。验证过程为:服务器 获得客户端发送来的用户名和密码,然后查询数据库的相应的用户列表,如果 该用户不存在或用户名与密码不匹配服务器将验证失败的结果通过 XMPP 协议 发还给客户端,验证过程终止。如果验证通过,登陆验证服务会将哈希表中的 用户状态由离线变为在线,然后将验证成功的结果发还给客户端。 登录认证的流程如下: 图 3.7 用户登陆流程图 在服务器的 DEBUG 中可以看到用户登陆时的一些 XMPP 数据: C:客户询问服务器登陆需要提供的信息 不成功 登录成功 掉线 Server Client 建立连接 退出 返回验证方式 提出登录请求 返回登录所需信息 提供登录所需信息 返回登录信息 成功则记录用户IP 发送在线信息 第 13 页 共 28 页 aaa S:服务器提示客户登陆所需要的信息 aaa C:客户发送当前状态给服务器表明其在线 chat 5 C:客户请求发送好友列表信息 S:服务器返回好友列表 0销售部 2 3开发部 1开发部 4销售部 2 第 14 页 共 28 页 1销售 部 2 1工会 当用户登陆到服务器以后,状态显示为在线。此时服务器向用户的好友列 表发送载有相应信息的 XML 流: chat .4 客户端的设计客户端的设计 1. 用户登陆 用户登陆界面如下图: 图 3.8 用户登陆界面 用户完成登录后, 客户端与服务器端建立连接。连接建立成功后,客户向 服务器请求读取好友名单;服务器收到该请求,开始读取数据库读取好友资料, 向客户端发送这些信息;客户收到服务器消息后,在主窗口显示好友。主窗口 界面如下图所示: 第 15 页 共 28 页 图 3.9 用户操作界面 客户可以在客户端查看好友信息,客户端向服务器发送查询好友信息的请 求,然后服务器查询数据库,接着将查询得到的结果组合成 XMPP 协议的 XML 流 返回给客户端。 图 3.10 查询好友信息流程图 2. 服务器连接 服务器连接是在 login.cs 类中实现的,通过调用 XMPP 组件中的 socket 实 现与服务器联通。根据服务器的 IP 地址和端口来完成客户端与服务器的连接。 IP 地址是网络中唯一地址的标识。服务器连接过程分服务器端与客户端两部分, Serverclient 连接与登录服务器 提出查询请求 返回查询到的信息 第 16 页 共 28 页 执行流程如下: (1)服务器程序流程 程序初始化; 填写本机地址信息; 绑定并监听一个固定的端口; 收到 Client 的连接后建立一个 Socket 连接; 产生一个新的进程与 Client 进行通信和信息处理; 子通信结束后中断与 Client 的连接。 (2)客户端程序流程: 程序初始化; 填写服务器地址消息; 连接服务器; 与服务器通信和信息处理; 通信结束后断开连接。 .5 文本通信功能设计文本通信功能设计 1. 一对一的文本通信 在本设计中文本通信功能采用由服务器中转,考虑到客户在登陆系统时就 跟服务器建立了 TCP 连接,而且在整个系统使用中客户与服务器之间除了一些 必要的控制信息及好友查询等信息要进行通信外,TCP 连接是处于空闲状态的, 所以可以利用服务器中转完成客户间的文本通信。单人聊天界面如下图: 图 3.11 单人聊天界面 在 Frmchat.cs 中,将用户的信息解析成 XML 报文,其代码如下: agsXMPP.protocol.client.Message msg = new agsXMPP.protocol.client.Message(); 第 17 页 共 28 页 msg.To = new Jid(name, “localhost“, “resourse“); msg.Type = MessageType.chat; msg.Body = rtb_send.Text; 在服务器的 DEBUG 中可以看到客户发送消息时的 XML 报文: C1:发送一方想服务器发送一文本信息 你好 C:接受一方客户接受到服务器转发过来的消息 你好 可以看出虽然文本信息是通过服务器中转了,但是服务器并没有对其进行 任何地修改,只是做一个透明的转发。 2. 一对多的文本信息 此功能用于会议室聊天,具有一个会议室的建立,会议室属性的设定等。 一个用户建立会议室后,服务器像所有在线用户发送此会议室的信息,其他用 户就可以在主界面看到此会议室的消息, 只要知道此会议室的密码,便能加入 此会议室聊天。会议室聊天界面如下图所示: 图 3.12 会议室聊天界面 第 18 页 共 28 页 将会议室发送消息封装成 XML 报文的代码如下: agsXMPP.protocol.client.Message msg=new agsXMPP.protocol.client.Message(); msg.Type = MessageType.groupchat; msg.To = roomjid; msg.Body = rtb_send.Text; 下面是群操作的部分 XMPP 数据流的例子: C:像服务器发出一个建立群房间的请求: 1 S:服务器向在线用户发送会议室的信息 C1:像服务器申请进入会议室: 1 C:用户在会议室中发送消息: 你好 S:服务器向各成员转发消息: 你好 C:成员离开会议室像服务器发送消息: S:服务器向房间成员转发成员离开消息: .6 文件传输文件传输 本设计中,文件传输采用的是P2P通信。P2P通信的特点是通信的双方通信 前借助XMPP服务器建立TCP连接,之后双方就进行与服务器无关的点对点通信, 第 19 页 共 28 页 直到通信结束。整个过程中,服务器只起了一个辅助与管理作用,真正的数据 通信与服务器服务器无关。 文件传输的流程如下: Client连接登陆服务器 Server通知客户建立文件传输连接 Server向发送方返回连接响应 Client提供系统支持的传输方式 Server返回相应 Client发送接收通信消息并提供协商方式 Server返回确认响应 客户提供连接 Server提供连接 文件传输过程 Client请求结束通信 Server结束通信响应 文件传输的主要代码实现: 1. 定义了一个createFileSenderSRV成员来创建一个P2P服务器 p2pThreadDelegate = new ThreadStart(Listen); myThread = new Thread(p2pThreadDelegate); myThread.Start(); this.statusStrip1.Text = “P2P服务器创建成功(“ + host + “,“ + port + “)“; 2. 创建 socket 连接 Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); socket.Connect(IPAddress.Parse(host), port); byte cmd = System.Text.Encoding.BigEndianUnicode.GetBytes(“start“); socket.Send(cmd, 0, cmd.Length, SocketFlags.None); 3. 定义了一个SendFile成员来完成发送文件的功能 if (strFile != “)/strFile是全局变量,用于保存发送发的文件路径 /发送传送文件请求 sendFile = true;/isFile是个bool类型的全局变量,初始值为false,当为 true是在P2P另一端弹出是否接收文件对话框 第 20 页 共 28 页 /对方允许接收文件 if (ready = true)/ready是bool类型全局变量,初始值为false,用于判断 对方是否接收文件 /准备发送 FileStream file = new FileStream(strFile, FileMode.Open, FileAccess.Read); BinaryReader binaryReader = new BinaryReader(file); this.statusStrip1.Text = this.getFileSize(file); byte b = new byte4098; int data; while (data = binaryReader.Read(b, 0, 4098) 0) if (!socket.Connected) socket.Connect(IPAddress.Parse(this.m_host), this.m_port); socket.Send(b, data, SocketFlags.None); else socket.Send(b, data, SocketFlags.None); socket.Shutdown(SocketShutdown.Both); binaryReader.Close(); file.Close(); MessageBox.Show(“发送成功!“); 4. 定义ReceiveFile成员来完成接收文件的功能 if (sfd.FileName != null | sfd.FileName != “) Thread.Sleep(1000); FileStream fs = new FileStream(sfd.FileName, FileMode.OpenOrCreate, FileAccess.Write); BinaryWriter binaryWrite = new BinaryWriter(fs); 第 21 页 共 28 页 int count; byte b = new byte4096; /设置socket为同步阻塞socket socket.Blocking = true; while (count = socket.Receive(b, 4096, SocketFlags.None) 0) binaryWrite.Write(b, 0, count); binaryWrite.Close(); fs.Close(); MessageBox.Show(“文件接收完毕!“); 4 4 系统测试系统测试 本系统经过多方面测试,系统各项功能能够良好的运行,并未出现什么问 题,下面以文件传输功能为例做一个系统测试: 首先,运行服务器,服务器自动开始监听 9000 端口,然后登陆客户端,登 陆成功后可以在服务器界面看到登陆的用户和用户的 IP 地
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 生态公园规划2025年初步设计评估报告:生态停车场与无障碍设施设计
- 2025医疗废弃物安全处置与应急响应能力提升项目合同
- 2025年财务信息管理及IT解决方案定制服务合同
- 绿色出行车辆租赁综合保障及绿色保险理赔合同
- 2025年互联网平台用户数据安全与保密服务合同(升级版)
- 2025年智慧建筑BIM技术应用与咨询服务合同
- 2025年母婴健康护航医院妇产科主治医生服务合作协议
- 2025年生态修复工程绿色植物补植与再造项目合同
- 深度解读2025年主题公园沉浸式体验项目开发中的智慧旅游技术应用报告
- 生态环保型石灰石开采及环保设施建设一体化合同
- 2025年燃气电厂笔试题库及答案
- 2025年科技咨询师考试题库
- 四川省凉山州2024-2025学年高一下册期末统一检测数学检测试卷
- 2025年道路运输两类人员安全员考试考核试题库答案
- 2025年历年医疗卫生卫健委面试真题及答案解析
- 2025年学法减分试题及答案
- 《智能建造概论》高职完整全套教学课件
- 心衰病人的观察与护理
- 2025年教育综合理论知识试题及答案
- 食品安全卫生试题及答案
- GB/T 30807-2025建筑用绝热制品浸泡法测定长期吸水性
评论
0/150
提交评论