《即时通讯系统设计.doc》由会员分享,可在线阅读,更多相关《即时通讯系统设计.doc(45页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、(此文档为word格式,下载后您可任意编辑修改!)摘 要目前,关于即时通讯系统(Instant Messaging System)的研究是互联网中一个热门方向,尤其是关于企业级的即时通讯系统更是成为了国内外应用的热点。企业版的即时通讯软件的诞生,给企业的管理带来了新的思路和方法,提高了企业的工作效率,降低了办公费用,引发了工程应用领域的新研究热潮。即时通讯系统基本上均采用客户机/服务器(C/S)模式。在此模式下,服务器无疑是处于核心地位的。本文正是围绕即时通讯系统服务器端软件开发这一核心展开。首先,本文选择了当今流行的各种即时通讯软件,进行对比分析,确定了即时通讯系统的功能,提出了不同的即时通
2、讯服务器的架构。其次,本文介绍了本系统使用的目前流行的一些技术,如多线程技术TCP/IP协议和OSI模型、套接字(socket)通信结构等围绕即时通讯的基本文字交流功能,设计了不同用户之间的文字通讯。本系统就是在此企业即时通信市场日益高涨的时候,采用先进的 Java Socket技术, 开发出一个 C/S模式的基于 TCP/UDP协议的网络通信系统。该系统充分利用了 Java的跨平台性, 结合目前已有的典型通讯软件 BBS和 OICQ的某些技术, 采用 TCP/UDP协议与服务器转发的技术, 扩展了文件发送的功能, 使得客户间发送文件不受防火墙限制。同时在时间允许的情况下增加语音、视频以及网络
3、电视等功能。关键词:即时通讯系统 OICQ C/S模式IThe Internet Messaging System Based on JavaAbstractNow the research about instant messaging system is a hot direction in internet, especially the instant messaging system for enterprise group is a hot spot in practicing in the world. The instant messaging system for enter
4、prise group brings new thoughts and ways for enterprise management, raises the working efficiency, cuts down the administrative expenses, and initiates the new trend in industrial practicing field. Instant messaging system mainly selects C/S mode. Server is the core part in this mode. This paper jus
5、t bases on the development of instant messaging system software. First, this paper selects several kinds of popular instant messaging software, contrasts and analyzes each one, defines the functions of instant messaging system, advances the different structures of instant messaging servers. Second,
6、this paper introduces some techniques which are used in this system, eg: TCP/IP, OSI and socket etc. basic communicating functions of instant messaging system, designs the characters and writing communication between different users. This system selects advanced Java Socket technique, develops a C/S
7、 mode internet communication system which is based on TCP/UDP. This system uses the Javas multi-platform feature fully, combines some techniques of the typical instant messaging software like OICQ which exist now, selects TCP/UDP agreement and server transmitting techniques, expands the files transm
8、itting function, which enables no restriction from fire wall while sending files between users. Meanwhile, it adds functions like internet call, video call and internet TV etc. when the time is sufficient. Key words:Instant Messaging System OICQ C/S ModeII目 录摘要IAbstractII1引言52研究综述62.1 Internet通信概述72
9、.2目前流行的即时通信软件简介72.2.1 ICQ72.2.2腾讯OICQ82.2.3 MSN82.2.4雅虎通Yahoo! Messenger82.2.5朗玛UC82.3即时通信软件在企业中的运用情况简介83相关技术简介103.1主流的网络通信模型103.1.1 C/S模型103.1.2 B/S模型113.1.3 P2P模型123.2 TCP/IP协议和OSI模型133.2.1 OSI模型133.2.2 TCP/IP协议143.2.3套接字153.3程序采用的主要技术163.3.1多线程技术163.3.2客户/服务器程序设计范式173.4 MySQL简介184系统设计194.1总体设计194
10、.2系统功能设计194.3数据库设计205详细设计与实现215.1服务器程序215.2客户端296系统测试426.1软件测试426.2软件测试目的427总结43参考文献44谢辞451 引言近年来,即时通信发展迅速,呈现出继语音、视频、短信之后的通信网络基本业务能力,成为越来越多的人在交友、工作、交易和咨询中的首选方式。当前,即时通信正从单纯的呈现和即时消息向多媒体综合通信方向发展,逐步占领企业和个人综合通信市场。无缝沟通是即时通信发展的方向。近期中国移动推出的“飞信”业务,就是突出在线即时消息与下线短信的转换,保持信息的无缝沟通。不仅如此,覆盖移动与固定终端的音/视频会议群组通信等都是即时通信
11、所关注的重要内容。多媒体的融合应用已成为即时通信发展的方向。据国外互联网市场研究公司 Radicati Group 的统计数据显示:2006 年全球即时通信用户数量已经达到 4.32 亿,到 2010 年预计全球将有 6.5 亿即时通信用户。据 CNNIC 统计,2006年中国即时通信用户数量达到 1.16 亿,即时通信软件在互联网用户中的渗透率达到 86%。随着网络接入的宽带化和终端智能化程度的提高,即时通信正向集呈现、即时消息、语音、视频、会议、应用共享为一体的融合通信方向发展。“无缝沟通、多媒体交流”已成为即时通信的特征。即时通信从个人向企业通信渗透,对于企业来说,即时通信相对于传统的电
12、话、手机、传真和邮件等沟通方式,无疑在沟通和协作等方面具备快捷和实时等优势。企业通信与企业的运作流程密切相关,即时通信的引入,大大提高了企业的综合通信能力。例如:由企业管理员维护的企业通信录,可即时看到员工的呈现状态;群发的即时消息,是企业发布公告或会议通知的理想方式;即时发起的音/视频会议以及应用协同,为在异地办公的人员实时沟通提供了便捷的手段等等。本系统就是针对当前市场的需求和技术的不断发展、企业对即时通信的需求日益增加,同时由于个人即时通信软件存在着安全性和可管理性差等明显的问题和不足,所以具有“无缝沟通、多媒体交流” 特征的企业即时通讯系统应运而生。2 研究综述2.1 Internet
13、通信概述Internet通信目前已经成为人们生活的一个基本部分。“沟通无极限”,移动通讯的广告语其实更适合即时聊天。即时聊天使亲友的沟通突破时空使办公室的沟通突破上下级极限,使陌生人的沟通突破环境极限,使自我与的沟通突破心理极限。如果说互联网创造了新生活,那么让新生活变得更畅快的就是即时通讯(Instant Messaging Software,以下简称IM)。早期在互联网上,人们只能E-Mail、新闻组、BBS等“原始”方式交流,往往不能够及时把消息传递给甚至不知道对方什么时候能够看到,或有谁能看到谁又会回应。作为使用频率最高的网络软件即时聊天已经突破了作为技术工具的极认为是现代交流方式的象
14、征,并构建起一种新的社会关系。它是迄今为止对社会生活改变最为深刻的一种网络新形态,没有极限的沟通将带来没有极限活。据统计,迄今为止,全球约有一亿多人使用即时通讯软件在网上交流网民惯用的即时通讯软件“腾讯QQ”从1999年2月诞生到现在,注户已超过1.6亿,2004年12月4日最高同时在线人数突破900万人,而每立上线人数更是达到一千二百多万,拥有活跃用户5500万,几乎覆盖所有网民。行业研究机构Radicati Group公司一项题为20032007间的即时通存在市场趋势的预测报告称,全球的即时通信服务账户将由去年的5.9亿增长到2007年的14.39亿美元,而即时通讯软件市场将由2003年底
15、时的美元大幅成长至2007年的2570万美元。其中企业领域增长显著,账户数量去年的6000万增长到2007年的3.49亿,增长幅度高达600。即时通讯软件的互动性高于BBS和E-mail,它比电话严肃,比E-mail利用它可以实时传送文字信息、语音信息和发送文件。另外,它还可以作为内部联络的一种方式,可以用来召开网络会议,比起实地的会议来,不仅而且节省开支。就像现代社会的电话一样,目前即时通讯软件的确做到了这一点。2.2目前流行的即时通讯软件简介目前市面上流行的即时通讯软件主要有:ICQ、“腾迅QQ”、MSN、YAHOO MESSENGER以及UC等等。2.2.1 ICQICQ原是以色列的几名
16、学生开发出来的一款即时通讯工具软件。它利用点的方式通讯,任何登录ICQ服务器的用户,尽管国籍、肤色、文化背景教信仰不同,都能够在网上即时沟通。任何人只要拥有ICQ号码,就可以界各地的人做朋友,它的互动性是Web网页、虚拟社区和电子邮件所无法的。在办公室中,同事之间透过ICQ联络事宜,就算近在咫尺,也无须起谈;与远方的亲朋好友交谈,也只是轻轻敲几下键盘就可以解决问题,这种在过去几乎是无法想象的。但ICQ对中文的支持比较差,不适于中国企业用。2.2.2腾讯OICQ腾讯OICQ,简称QQ,是国内最时髦的即时通讯工具,其用户的年龄层次从刚开中小学生族,发展到现在的几乎所有上网者。每当看到连到网上的一台
17、台电屏幕上跳跃着一个个各式各样“小人头儿”,就知道QQ上的好友来信了。目迅QQ”开展了大量的网络增值服务,如为其用户提供网上寻呼、视频聊天音聊天、网络硬盘、动态新闻等信息,开通手机上的移动QQ服务,并且于年5月中旬推出了QQ2004版软件,同时为每一个QQ账号送一个5M的免箱。2.2.3 MSN软件巨头微软开发了MSN Messenger,把MSN Messenger嵌Windows XP操作系统里。MSN Messenger有近30种语言的不同版本。您还使用此免费程序拨打电话,用交谈取代输入,向手机发送消息,监视新的电件,共享图片或其他任何文件,邀请朋友玩DirectPlay兼容游戏等等。目
18、前Messenger已经推出ver6.2,在功能和外观上都有很大的变化,在外观界面也比以前的版本更加生动。2.2.4雅虎通Yahoo!MessengerYahoo!Messenger(雅虎通)是由美国著名综合门户类网站Yahoo!推出的聊天软件。Yahoo! Messenger的功能侧重点似乎并不在它的聊天功能上,它更像一个免息提供器。Yahoo! Messenger支持多种操作系统,并支持其它便携式无线具有与其它即时通讯软件所不同的商业价值。你不仅可以随时查看新闻和天报,甚至可以随时查阅股票行情。你还能利用Yahoo! Messenger安排自己的行程计划,随时收发新邮件。2.2.5朗玛UC
19、朗玛UC是2002年里新涌现的即时通讯软件代表,它的开发者想通过电子科技大学硕士学位论文:企业即时通讯系统服务器的设计。UC给大家带来这样一个全新的聊天理念:新一代开放式即时通讯娱乐平台玛UC也的确给了我们一种前所未有的聊天新感觉:网上聊天,也可以情景它采用自由变换场景、个性在线心情等人性化设计,配合视频电话、信息文件互传、在线游戏等使您在聊天的同时能边说、边看、边玩。2.3即时通讯软件在企业中的运用情况简介目前流行的即时通讯软件都有其各自的特点,但它们多是针对的是个人用户,而不是大企业用户。目前,即时通讯件从开始的单一的信息实时交流,发展到如今的集即时在线娱乐、视频会议以及手机短信等诸多功能
20、于一体。如此迅猛的发展多企业用户考虑使用即时通讯来提高内部交流的质量,理顺内部交流渠道内部交流成本。尤其对跨国的大公司大集团更是有迫切的需要。事实上,企时通信工具在国外一些企业已经被广泛应用,比如IBM通过使用即时通信所节省下来的国际电话费及差旅费,每年就可节省四亿美元。然而即时通讯软件也给企业用户带来了一定的尴尬和困难。目前,尤其是大型企业,大都有自己的Intranet网络,其大多的工作流或内流都可以通过内部的Intranet完成。如果企业中员工都使用目前免费的几种通讯软件,则必须对这些使用进行严格的审计和管理,这无疑给IT部门的带来了一定的麻烦。加之,由于网络的虚拟性,即时通讯软件均允许自
21、己任意命名,这更给用户的管理带来了不便。综合分析以上原因,本文认为,有必要自主开发应用于企业的即时通讯系统软件。从调研结果来看,尽管目前有多种即时通讯产品的问世,有的产品有良好的客户群体,但商业机构的实践活动由于其实用化的取向,所以在即时通讯研究工作方面并不活跃。同时,出于商业机密的考虑,根本就没有公开论著学术化的即时通讯研究,国外公开发表的论文也非常少。通讯基本服务元素的定义方面。还有部分关于安全性的讨论从“中国期刊网”和“万方数字化期刊”等国内论文调研的情况看来,部分文章是商业即时通讯工具的使用介绍。虽然有少数几篇讨论“网络传呼编程技巧的论文,但普遍存在一些误解,如把即时通讯系统等同于聊天
22、甚至还把即时通讯系统混淆成网络聊天室,而后者事实上是采用网络中转聊议9(Internet Relay Chat Protocol,IRCP)的网站服务。总的说来,国内外关于即时通讯的研究还不够系统和深入。本系统就是在此时企业即时通信市场日益高涨的时候,采用先进的 Java Socket技术, 开发出一个 C/S模式的基于 TCP/UDP协议的网络通信系统. 该系统充分利用了 Java的跨平台性, 结合目前已有的典型通讯软件 BBS和 OICQ的某些技术, 采用 TCP/UDP协议与服务器转发的技术, 扩展了文件发送的功能, 使得客户间发送文件不受防火墙限制.同时在时间允许的情况下增加语音、视频
23、以及网络电视等功能。3 相关技术简介该即时通信系统是在客户端/服务器程序设计范式基础上按照软件工程设计思想,采用大量的计算机程序设计技术和网络通信技术设计并实现的。本章将介绍主流的网络通信模型、网络通信技术、密码学相关知识和程序设计主要采用的Windows编程技术。3.1主流的网络通信模型3.1.1 C/S模型C/S(Client/Server,客户/服务器)模型,该模型可以合理利用两端硬件环境优势,将任务合理分配到客户端和服务器,降低系统通信开销7。在这种结构中,服务器处于系统的中心地位。服务器是一个拥有强大处理能力和很大带宽的高性能计算机,数据和信息都保存在服务器上。服务器始终处于工作状态
24、,它被动地接受客户连接,根据客户的请求提供相应的服务。体系结构如图2.1所示。C/S结构可分为传统的两层结构和新型的三层结构。二层结构出现在20世纪80年代后期。在这种结构中,服务器只负责各种数据的处理和维护,为各个客户机应用程序管理数据;客户机中有文档处理软件、决策支持工具、数据查询等应用逻辑程序,采用SQL语句发送请求和分析从服务器接收的数据。这是一种“胖客户机(Fat Client)”、“瘦服务器(Thin Server)”的网络结构模式。其软件模型如图2.2所示。随着其应用范围的不断扩大,两层结构带来的系统可靠性低、缺乏灵活性、资源浪费严重以及维护费用较高等问题日益明显,网络计算模式逐
25、渐从两层模式扩展到三层模式。在三层结构中,应用逻辑程序从客户机上分离出来,进而发展为应用服务器或Web服务器。这是一种“瘦客户机”网络结构模式,客户端只有界面显示程序,只需在服务器端随机增加应用服务即可满足系统的需要,可以用较少的资源建立起具有很强伸缩性的系统,这也是当前Internet上最先进的技术之一。其软件模型如图2.3所示。3.1.2 B/S模型B/S(Browser/Server,浏览器/服务器)模型,是随着Internet技术的兴起,对C/S结构的一种变化和改进的结构。该结构使用浏览器通过HTTP协议访问Web服务器。B/S三层结构如图2.4所示。在B/S三层结构中,数据库服务器(
26、DB Server)使用关系数据库存储系统中所有的数据,Web Server处理客户端的请求。客户端使用浏览器访问Web Server,功能更加简单,它只显示数据和提供用户输入界面的功能,绝大多数的计算都在Web Server上。这种“瘦客户”的思想非常适于系统部署。3.1.3 P2P模型P2P(Peer to Peer,对等连接或对等网络)模型,是指网络中的物理节点在逻辑上以相同的地位进行通信的模型,而不是处理能力的对等8。相对于传统的集中式C/S模型,其弱化了服务器的概念,系统中的各个节点不再区分服务器和客户端的角色关系,每个节点既可请求服务,也可提供服务,节点之间可以直接交换资源和服务而
27、不必通过服务器9。P2P的最大特点就是用户之间直接共享资源,使得PC不再是被动的客户端,而成为具有服务器和客户端双重特征的设备。目前P2P的构架手段主要有集中目录式P2P、纯P2P和混合P2P模式三种,如图2.5从左至右所示。集中目录式P2P是最早出现的P2P应用模式,也称为非纯粹的P2P结构,仍然具有中心化的特点,用于共享MP3音乐文件的Napster是最典型的代表。在这种模型中,所有的节点都和中心目录服务器建立连接,中心目录服务器负责所有节点的内容,当节点发出请求时,中心目录服务器会根据节点的请求找出符合该节点要求的节点,然后文件交换就直接在这两个节点之间进行。纯P2P模型完全没有了索引的
28、概念,资源随机地分布在系统中所有的节点中,每个节点的请求都会广播给所有和它直接相连的节点,如果这些节点中都没有所请求的文件,这些节点会把这个请求继续广播给所有和他们直接相连的节点,直到找到所请求的文件或者广播的次数超过了某个值。混合式P2P吸取了中心化P2P和纯P2P的优点,选择性能(处理、存储、带宽等方面)较高的节点作为超级节点,在各个超级节点上存储了系统中其他部分结点的信息。混合式P2P中,搜索数据包仅在超级节点之间转发,由超级节点将搜索请求转发给适当的叶子节点。3.2 TCP/IP协议和OSI模型3.2.1 OSI模型OSI(Open Systems Interconnection),即
29、开放式通信系统互联参考模型,是国际标准化组织(ISO)提出的一个试图使各种计算机在世界范围内互连为网络的标准框架。OSI定义了开放系统的层次结构、层次之间的相互关系以及各层所包括的可能的任务,它本身并不是一个标准,而是一个在制定标准时使用的概念性框架,是作为一个框架来协调和组织各层所提供的服务的10。OSI模型由7个层组成,每一层都处理特定的通信任务。如图2.6所示。在单台机器中,每一层通过两层间的层间接口调用下一层的服务,取出对该层有意义的数据;机器之间则是使用某个给定层的协议的对等进程进行通信11。这种通信由一些协议来控制,协议就是实现双方都同意的一组规则和约定。对等进程是指每一个机器的某
30、个给定层上进行通信的进程。3.2.2 TCP/IP协议TCP/IP(Transmission Control Protocol/Internet Protocol),即传输控制协议/互联网络协议,是美国的国防部高级计划研究局DARPA为实现ARPANET(后来发展为Internet)互连网而开发的。该协议是Internet国际互联网络的基础和事实上的标准,其规范了网络上的所有通信设备,尤其是两台主机之间的数据往来格式以及传送方式12。TCP/IP协议由应用层、传输层(TCP)、网络层(IP)和数据链路层(包括物理层)四层组成,与OSI模型的对应关系如图2.7所示。在物理和数据链路层中TCP/I
31、P并没有定义任何特定的协议,它支持所有标准的和专用的协议。网络层提供主机到主机的通信服务,负责将分组从发送主机送到接收主机。网络层通过选路算法和协议为分组选择通过通信子网最适当的路径,并通过路由器的将数据报从源主机转发到目的地主机。传输层的作用是将两个端系统间的IP交付服务扩展为运行在两个端系统上的进程之间的交付服务,提供进程逻辑通信功能13。传输层协议是在端系统而不是在路由器中实现的,其中包括UDP和TCP。应用层为不同的端系统提供通过计算机网络交换报文互相通信的功能。应用层协议定义了进程间交换的报文格式和顺序,以及传输和接收到报文时采取的动作,其中包括交换的报文类型、报文类型的语法、字段的
32、语义、报文响应规则等14。3.2.3套接字WinSock是一套开放的、支持多种协议的Windows网络编程接口,是Windows网络编程事实上的标准。应用程序通过WinSock API设计通信程序,WinSock利用网络通信协议和操作系统调用完成实际的通信工作。(1)套接字基本概念套接字(socket)是内核对象中的一种通信结构,它提供网络进程间的数据通信功能。形象上说套接字就是进程的门户15。套接字地址是套接字通信结构的描述和定义。套接字描述符就是一个整数类型的值,在Windows中的类型是SOCKET。套接字描述符实质是某套接字内核对象的一个“句柄”,套接字描述符所在的进程则通过该“句柄”
33、访问和操作该套接字。每个进程的进程空间里都有一个套接字描述符表,该表中存放着套接字描述符和套接字数据结构的对应关系。该表中有一个字段存放新创建的套接字的描述符,另一个字段存放套接字数据结构的地址。因此根据套接字描述符就可以找到其对应的套接字数据结构。每个进程在自己的进程空间里都有一个套接字描述符表,但是套接字数据结构都是在操作系统的内核缓冲里,可供多个进程使用。(2)套接字通信模式和I/O模式Windows套接字执行I/O操作可以设定为锁定或非锁定模式。在锁定模式下,在I/O操作完成前执行操作的Winsock函数(如send和racy)会一直等待下去,而不会返回并将控制权交给程序。在非锁定模式
34、下无论结果如何,Winsock函数的调用都会立即返回。因此,这种套接字需要选择一种I/O模型来帮助应用程序判断一个套接字何时可供读写。Windows操作系统提供了五种套接字I/O模型,分别为选择(Select)、异步消息(WSAAsyncSelect)、事件通知(WSAEventSelect)、重叠I/O(Overlapped I/O)和完成端口(Completion Port)模型1617。Select模型是Winsock中最常见的I/O模型。通过调用Select函数可确定一个或多个套接字的状态,判断套接字上是否存在数据,或者能否向一个套接字写入数据。它既能防止应用程序在套接字处于阻塞模式时
35、,在一次I/O操作后被阻塞,同时也防止在套接字处于非锁定模式时,产生WSAEWOULDBLOCK错误,提示请求的操作在调用期间没有时间完成。WSAAsyncSelect模型也是一个常用的异步I/O模型。利用这个模型,应用程序可在一个套接字上接受以Windows消息为基础的网络事件通知。该模型的实现方法是通过调用WSAAsyncSelect函数自动将套接字设置为非阻塞模式,并向Winsock DLL注册一个或多个感兴趣的网络事件,并提供一个通知时使用的窗口句柄,当网络事件发生时,对应的窗口将收到一个基于消息的通知。WSAEventSelect模型是Winsock提供的另一个有用的异步I/O模型,
36、它允许应用程序在一个或多个套接字上,接收以事件为基础的网络事件通知。该模型的关键是网络事件会被发送到一个事件句柄,而不是发送到一个窗口。Overlapped I/O模型可以使应用程序达到更佳的性能。它的基本原理是让应用程序使用一个重叠的数据结构,一次投递一个或多个Winsock I/O请求,针对那些提交的请求,在它们完成之后,应用程序可为他们提供服务。Completion Port模型是迄今为止最为复杂的一种I/O模型。假如要为Windows NT或Windows 2000开发高性能的服务器应用,希望同时为数百乃至上千个套接字I/O请求提供服务(如Web服务器),那么I/O完成端口模型便是最佳
37、选择,其可以达到最佳的系统性能!随着系统内安装的CPU数量的增多,应用程序的性能也可以线性提升。(3)I/O模型的选择和性能提高开发服务器应用时,一般需要同时管理多个套接字,因此采取重叠I/O模型是比较符合需求的;若需要同时管理成百上千的套接字,则需要考虑采用完成端口模型,以获得更好的性能16。开发客户机应用时,一般只需同时管理一个或几个套接字,采用事件通知模型即可。若开发的是基于Windows窗口例程的程序,那么采用异步消息模型应该是更好的选择,该程序已经具备了处理消息的能力。3.3程序采用的主要技术3.3.1多线程技术线程由线程的内核对象和线程堆栈两部分组成。操作系统通过内核对象对线程实施
38、管理,其中存放了系统关于线程的统计信息。线程堆栈用于维护线程在执行代码时需要的所有函数参数和局部变量21。线程只有一个内核对象和一个堆栈,保留的记录很少,也只需很少的内存,因此创建线程的开销远比创建进程少。在实际编程过程中应根据实际情况设法通过增加线程来解决编程问题,而要尽量避免创建新的进程。线程分为两种:用户接口线程和辅助线程。用户接口线程常用于接收用户的输入,处理相应的事件和消息。辅助线程编程较为简单,一个基本函数代表一个线程,创建并启动线程后,则线程进入运行状态。进程的主线程在任何时候都可以创建新的线程,当线程执行完成任务后,自动中止线程;当进程结束后,所有的线程都中止22。所有活动的线
39、程共享进程的资源。3.3.2客户/服务器程序设计范式客户/服务器程序设计范式是在设计C/S网络通信控制或者数据交互的应用中总结出来的一些具有代表性的、可以给其它程序设计提供范例的程序设计框架,在实际应用中具有指导和规范作用。该类程序的客户程序的编写通常比服务器程序容易些,因为客户中进程或者线程的控制要少得多。因此,设计范式主要也是针对服务器程序的设计,主要分为迭代服务器和并发服务器两大类2425。(1)迭代服务器迭代服务器(Iterative Server)的工作模式是在一个循环中依次完成每个客户的请求完成后再执行一个循环的工作过程。该模式总是在处理完某个客户的请求之后才转向下一个客户,在执行
40、某任务期间不会侦听和处理其它任何任务。其依次执行接受连接、处理请求、关闭连接、等待下一个连接四个循环步骤。这样的服务器程序比较少见,其中没有进行任何的进程或线程控制。(2)并发服务器,每个客户一个进程该并发服务器(Concurrent Server)直接派生子进程来处理每个客户,服务器通过多个子进程同时为多个客户服务。客户数目的唯一限制是操作系统对于以其名义运行服务器的用户ID能够同时拥有多少子进程的限制。其缺点是该并发服务器需要耗费大量CPU时间为每个客户现场派生一个子进程。随着网络应用的爆发式增长,这种模式的服务器显得无法适应现代的需要。该模式的增强模式就是采取预先派生子进程技术,在启动阶
41、段就派生一定数量的子进程,当每个客户连接到达时,这些子进程立即就能提供服务。这种技术的优点在于无须引入父进程执行派生进程的开销就能处理新到的客户,缺点是父进程必须在服务器启动阶段猜测需要预先派生多少子进程,以避免造成子进程数量过多造成计算机资源浪费或者数量不够导致后续连接的客户端无法正常工作。(3)并发服务器,每个客户一个线程该类服务器为每个客户创建一个线程,以减少为每个客户派生子进程的第二章系统程序设计思想和方法15资源消耗,因为一个线程占用的资源远比一个子进程占用的资源要少得多。程序设计中也可以在服务器启动阶段预先创建一个线程池以取代为每个客户现场创建一个线程的做法以提高性能加速。在等待客
42、户端连接时则可以每个线程各自accept,其中采用互斥锁保护,也可以由主线程统一accept。本程序的设计是采取由主线程统一accept并创建工作线程的。在并发服务器中选择进程还是线程来设计需要根据实际的情况决定。进程是一种代价昂贵的东西,它们在启动、清除、被操作系统追踪记录等方面都需要消耗大量的CPU时间。进程和线程之间的代价几乎相差23个数量级。系统同时存在500个线程犹有可能,但同时存在500个进程绝无可能。每秒钟产生和摧毁许多个线程是可能的,每秒钟产生和摧毁许多个进程则是不可能的。但是进程的安全性和稳定性更强,子进程崩溃并不影响主进程的正常运行,而进程中的一个线程出现问题则就会导致该进
43、程的垮掉26。3.4 MySQL简介MySQL是最流行的开放源码SQL数据库管理系统,它是由MySQL AB公司开发、发布并支持的。MySQL AB是由多名MySQL开发人创办的一家商业公司。它是一家第二代开放源码公司,结合了开放源码价值取向、方法和成功的商业模型。在MySQL的网站(1)MySQL是一种数据库管理系统。数据库是数据的结构化集合。它可以是任何东西,从简单的购物清单到画展,或企业网络中的海量信息。要想将数据添加到数据库,或访问、处理计算机数据库中保存的数据,需要使用数据库管理系统,如MySQL服务器。计算机是处理大量数据的理想工具,因此,数据库管理系统在计算方面扮演着关键的中心角
44、色,或是作为独立的实用工具,或是作为其他应用程序的组成部分。(2)MySQL是一种关联数据库管理系统。关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大的仓库内。这样就增加了速度并提高了灵活性。MySQL的SQL指得是“结构化查询语言”。SQL是用于访问数据库的最常用标准化语言,它是由ANSI/ISO SQL标准定义的。SQL标准自1986年以来不断演化发展,有数种版本。在本手册中,“SQL-92”指得是1992年发布的标准,“SQL:1999”指得是1999年发布的标准,“SQL:2003”指得是标准的当前版本。我们采用术语“SQL标准”标示SQL标准的当前版本。(3)MySQL软
45、件是一种开放源码软件。“开放源码”意味着任何人都能使用和改变软件。任何人都能从Internet下载MySQL软件,而无需支付任何费用。如果愿意,你可以研究源码并进行恰当的更改,以满足你自己的需求。MySQL软件采用了GPL(GNU通用公共许可证),http:/www.fsf.org/licenses/,定义了在不同情况下可以用软件作的事和不可作的事。如果你对GPL不满意,或需要在商业应用程序中嵌入MySQL代码,可从我方购买商业许可版本。更多信息,请参见MySQL许可概述( (4)MySQL数据库服务器具有快速、可靠和易于使用的特点。如果它正是你所寻找的,不妨一试。MySQL服务器还有一套实用的特性集合,这些特性是通过与我们用户的密切合作而开发的。在我们的基准测试主页上,给出了MySQL服务器和其他数据库管理器的比较结果。请参见7.1.4 “MySQL基准套件”。MySQL服务器最初是为处理大型数据库而开发的,与已有的解决方案相比,它的速度更快,多年以来,它已成功用于众多要求很高的生产环境
限制150内