毕业论文基于Socket网络聊天系统的设计与实现

毕业论文基于Socket网络聊天系统的设计与实现

ID:252713

大小:1.02 MB

页数:53页

时间:2017-07-14

上传者:chess95660
毕业论文基于Socket网络聊天系统的设计与实现_第1页
毕业论文基于Socket网络聊天系统的设计与实现_第2页
毕业论文基于Socket网络聊天系统的设计与实现_第3页
毕业论文基于Socket网络聊天系统的设计与实现_第4页
毕业论文基于Socket网络聊天系统的设计与实现_第5页
资源描述:

《毕业论文基于Socket网络聊天系统的设计与实现》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

摘要随着Internet的飞速发展,网络聊天以其操作简单、方便快捷、私密性好等优点已经迅速发展成为最普遍的网络交流方式之一,越来越受到人们的青睐,丰富了人们的网上生活。开发并实现具有自身特色的网络聊天系统具有实际应用价值。本网络聊天系统基于Java应用程序设计,以Client/Server为开发模式,以Eclipse为开发环境,以MySQL为后台数据库,利用JDBC连接数据库。系统主要包括服务器模块和客户端模块,服务器模块能够对客户端发来的用户信息进行匹配、读取和转发;客户端模块能够进行注册、登录、聊天和文件传输。系统不但实现了点到点的聊天,还利用Java提供的Socket类和多线程功能,在单个程序中同时运行多个不同进程,从而实现多点对多点的聊天。总之,该聊天系统具有开放性,实时性,多话题交错等特点,方便了人们网上交流。【关键词】网络聊天服务器模块客户端模块Socket ABSTRACTWiththerapiddevelopmentofInternet,networkchatwithitssimpleoperation,convenientandgondprivacyhasquicklybecomethemostpopularwayofcommunicationnetworks,moreandmorepeoplelikeit,enrichpeople'sonlinelives.DevelopmentandRealizationofthenetworkchatsystemwithitsowncharacteristicsandhaspracticalapplicationvalue.TheInternetchatsystemisbasedonJavaapplication,designedbyClient/Serverasthedevelopmentofmodels,asEclipsedevelopmentenvironment,MySQLasthebackenddatabase,andusingJDBCtoconnectdatabase.Thesystemincludesservermodulesandclientmodules,servermodulecanmatchusers'data,readandforwardtheinformationwhichissentbyclient;clientmoduletoregist,login,chatandfiletransfer.Thesystemnotonlyachievespeer-to-peerchat,butalsousetheJavaprovidsSocketclassandmulti-threadingcapabilities,inasingleprogramrundifferentprocessesatthesametime,inordertoachievemultipointchat.Inshort,thechatsystemisopen,real-timeandmulti-topicstaggeredfeatures,easyforpeopletocommunicateonline.【Keywords】NetworkChatClientModuleServerModuleSocket 毕业设计(论文)原创性声明和使用授权说明原创性声明本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得及其它教育机构的学位或学历而使用过的材料。对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。作者签名:     日 期:     指导教师签名:     日  期:     使用授权说明本人完全了解大学关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。作者签名:     日 期:      学位论文原创性声明本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。本人完全意识到本声明的法律后果由本人承担。作者签名:日期:年月日学位论文版权使用授权书本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权    大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。涉密论文按学校规定处理。作者签名:日期:年月日导师签名:日期:年月日 指导教师评阅书指导教师评价:一、撰写(设计)过程1、学生在论文(设计)过程中的治学态度、工作精神□优□良□中□及格□不及格2、学生掌握专业知识、技能的扎实程度□优□良□中□及格□不及格3、学生综合运用所学知识和专业技能分析和解决问题的能力□优□良□中□及格□不及格4、研究方法的科学性;技术线路的可行性;设计方案的合理性□优□良□中□及格□不及格5、完成毕业论文(设计)期间的出勤情况□优□良□中□及格□不及格二、论文(设计)质量1、论文(设计)的整体结构是否符合撰写规范?□优□良□中□及格□不及格2、是否完成指定的论文(设计)任务(包括装订及附件)?□优□良□中□及格□不及格三、论文(设计)水平1、论文(设计)的理论意义或对解决实际问题的指导意义□优□良□中□及格□不及格2、论文的观念是否有新意?设计是否有创意?□优□良□中□及格□不及格3、论文(设计说明书)所体现的整体水平□优□良□中□及格□不及格建议成绩:□优□良□中□及格□不及格(在所选等级前的□内画“√”)指导教师:(签名)单位:(盖章)年月日 评阅教师评阅书评阅教师评价:一、论文(设计)质量1、论文(设计)的整体结构是否符合撰写规范?□优□良□中□及格□不及格2、是否完成指定的论文(设计)任务(包括装订及附件)?□优□良□中□及格□不及格二、论文(设计)水平1、论文(设计)的理论意义或对解决实际问题的指导意义□优□良□中□及格□不及格2、论文的观念是否有新意?设计是否有创意?□优□良□中□及格□不及格3、论文(设计说明书)所体现的整体水平□优□良□中□及格□不及格建议成绩:□优□良□中□及格□不及格(在所选等级前的□内画“√”)评阅教师:(签名)单位:(盖章)年月日 教研室(或答辩小组)及教学系意见教研室(或答辩小组)评价:一、答辩过程1、毕业论文(设计)的基本要点和见解的叙述情况□优□良□中□及格□不及格2、对答辩问题的反应、理解、表达情况□优□良□中□及格□不及格3、学生答辩过程中的精神状态□优□良□中□及格□不及格二、论文(设计)质量1、论文(设计)的整体结构是否符合撰写规范?□优□良□中□及格□不及格2、是否完成指定的论文(设计)任务(包括装订及附件)?□优□良□中□及格□不及格三、论文(设计)水平1、论文(设计)的理论意义或对解决实际问题的指导意义□优□良□中□及格□不及格2、论文的观念是否有新意?设计是否有创意?□优□良□中□及格□不及格3、论文(设计说明书)所体现的整体水平□优□良□中□及格□不及格评定成绩:□优□良□中□及格□不及格(在所选等级前的□内画“√”)教研室主任(或答辩小组组长):(签名)年月日教学系意见:系主任:(签名)年月日 目录前言1第一章系统开发工具简介2第一节客户机/服务器模型2第二节JAVA简介3第三节Socket简介4第四节Eclipse简介7第五节MySQL简介8本章小结9第二章系统分析10第一节可行性分析10第二节业务流分析11第三节需求分析11一、系统设计目标11二、系统功能需求12本章小结13第三章系统概要设计14第一节系统总体描述14第二节模块设计15第三节数据库设计16一、设计原则16二、具体步骤17本章小结18第四章系统实现20第一节数据库模块实现20一、数据流图20二、数据库的连接20第二节注册模块实现21第三节登录模块实现23第四节聊天模块实现24第五节文件传输模块实现25本章小结27第五章系统测试28 第一节服务器模块测试28第二节注册模块测试29第三节登录模块测试30第四节聊天模块测试31第五节文件传输模块测试32本章小结34总结35致谢36参考文献37附录38一、英文原文38二、英文翻译41 前言随着互联网的快速发展,网络聊天软件以它的实时性、高效率和低成本的特质充当了信息交流的媒介,并逐渐成为网络商圈和生活商圈中不可或缺的组成部分[1]。网络聊天工具实现了“沟通无极限”,它打破了办公室里上级与下级直接的等级限制,也打破了长辈与晚辈之间的时间限制,也打破了异地之间的距离限制。同时人们对于网络聊天工具的友好的界面和快捷的操作方式也越来越高。大家都知道,网络上最常用的交流工具是腾讯QQ,QQ来源于OICQ(openicq),ICQ是“Iseekyou”的简称,是“我找你”的意思。QQ引用了ICQ的功能即即时通信,我们只要将对方加为好友,不管对方是否在线,我们都可以向对方发送信息,无论对方在哪里,只要登陆QQ,他就能够看到我们给他发的信息,我们就能够随时随地的和对方进行信息交流[2]。随着网络聊天工具的不断完善,它的功能越来越多样化,由最初的文字交流发展成现在的视频、语音交流,同时也提供了文件的发送和共享功能。其中不难发现,现在的网络聊天已经不再是一个简单的沟通工具,而是一个信息资讯、交流互动、娱乐的工具。随着技术的发展,网络聊天工具具有即时性、高效性、安全性、功能上较强的延展性,能够提供方便、快捷的交流[3][4]。本系统主要分析了网络聊天系统应该具备的功能、运行方式和实现方式,开发出一个基于Socket的网络聊天工具。该系统主要实现功能包括:注册、登录、聊天和文件的传输。44 第一章系统开发工具简介第一节客户机/服务器模型一、C/S结构简介客户机/服务器模型,又称为Client/Server模型,简称C/S架构[5]。C/S计算技术在信息产业中占有重要的地位。它是软件系统体系结构,通过它可以充分利用两端硬件环境的优势,将任务合理分配到Client端和Server端来实现,降低了系统的通讯开销。客户端的任务是将用户的要求提交给服务器程序,再将服务器程序返回的结果以特定的形式显示给用户。服务器程序的任务是接收客户程序提出的服务请求,进行相应的处理,再将结果返回给客户程序。二、C/S特点C/S是客户端/服务器,一般适合于软件开发,对客户端的计算机配置要求比较高,客户端也需要安装软件,比如QQ。C/S架构软件的特点如下:应用服务器运行数据负荷较轻。C/S体系结构由客户应用程序和数据库服务程序组成,二者分别称为前台程序和后台程序。一旦服务器程序被启动,就随时等待响应客户程序发来的请求;客户应用程序当需要对数据库中的数据进行任何操作时,客户程序就会自动寻找服务器程序,并向其发出请求,服务器程序根据规程做出响应,返回结果,应用服务器运行数据负荷较轻。数据的储存管理功能较为透明。在数据库应用中数据的储存管理功能是由服务器程序和客户应用程序分别独立进行的。前台应用可以违反的规则,并且通常把那些不同的运行数据,在服务器程序中不集中实现。因此对于工作在前台程序上的最终用户是“透明”的,他们无须干涉背后的过程就可以完成自己的一切工作。在C/S提醒体系下,数据库不能真正成为公共、专业化的仓库,它受到独立的专门管理。44 第一节JAVA简介Java是由SunMicrosystems公司于1995年5月推出的java程序设计语言和Java平台的总称。用Java实现的HotJava浏览器(支持Javaapplet)显示了Java的魅力:跨平台、动态的Web、internet计算。从此Java被广泛接受并推动力web的迅速发展,常用的浏览器限制均支持Javaapplet。Java平台由Java虚拟机(JavaVirtualMachine)和Java应用编程接口(ApplicationProgrammingInterface,简称API)构成。Java应用在编程接口为Java应用提供了一个独立于操作系统的标准接口,可分为基本部分和扩展部分。在硬件和操作系统平台上安装一个Java平台之后,Java应用程序就可运行。Java应用编程接口已经从1.1X版本发展到1.2版。目前常用的Java平台基于Java1.4,最近版本为Java1.7。Java分为三个体系J2SE(Java2StandardEdition),J2EE(Java2PlatformenterpriseEdition),J2ME(Java2MicroEdition)。Java是一种具有简单性(Java语法是C++语法的一个“纯净”版本)、面向对象(面向对象是一种程序设计技术,它将重点放在数据和对象的接口上)、网络技能(Java有一个扩展的例程库,用于处理HTTP和FTP这类的TCP/IP协议)、健壮性、安全性(Java可以构建防病毒、防篡改的系统)、体系结构中立、可移植性、解释型、高性能、多线程的动态语言[6]。Java的I/O建立于流(stream)之上。输入流读取数据;输出流写入数据。不同的流类如java.io.FileInputStream和sun.net.TeletOutputStream读写某一种数据源。但是所有输入流都有相同的基本方法,所有输入流也使用相同基本方法来读取数据[7]。Java中的数据流类型有两种:输出流(OutputStream):输出流数据流经数据从程序送到数据接收者,如可以向显示器屏幕或者文件传输数据。输出流只能写不能读。输入流(InputStream):程序从外部设备写数据时,使用输入流。输入流将数据从数据源传递给程序,可以从键盘或者文件中获得数据。输入流只能读不能写。44 第一节Socket简介Socket通常被称为“套接字”,用于描述IP地址和端口[8]。Socket是建立在传输层协议(主要是TCP和UDP)上的一种套接字规范[9],Socket接口是TCP/IP网络的API。在网络通信中,如果两台计算机之间是靠一个“通道”通信,那么这个“通道”的两端就是套接字。Socket是传输层提供的网络进程通信接口,相当于我们现在所用的“插座”,是进程之间通信的抽象连接点。在日常生活中,我们常见到信号插座、电话插座、接收/发送信号(或能量)的插座。Socket就相当于在电话线和电话机之间安放的插座。在网络上,两个程序是靠一个双向链路进行通信,这个双向链路的每一端就成为一个Socket。进程之间通信,首先要需要建立一个自己的Socket,每个Socket都能进行读/写操作,进行读写操作时就会用到Socket中的输入/输出流[10]。客户端建立Socket对象步骤:1、调用Socket()创建一个流套接字,并连接到服务器端;Sockets=newSocket(InetAddress.getByName(“服务器的主机名”),port);2、调用Socket类的getOutputStream()和getInputStream获取输出流和输入流,开始网络数据的发送和接收。OutputStreamos=s.getOutputStream();InputStreamis=s.getInputStream();byte[]buf=newbyte[100];intlen=is.read(buf);//从服务器端读取数据System.out.println(newString(buf,0,len));os.write("Hello,thisisclient".getBytes());//向服务器端输入数据3、最后关闭通信套接字。os.close();is.close();s.close();服务器端建立Socket步骤:1、创建一个服务器端套接字,并绑定到指定端口上;ServerSocketss=newServerSocket(intport),2、调用accept(),监听连接请求,如果客户端请求连接,则接受连接,返回通信套接字。Sockets=ss.accept();3、调用Socket类的getOutputStream()和getInputStream获取输出流和输入流,开始网络数据的发送和接收。OutputStreamos=s.getOutputStream();44 InputStreamis=s.getInputStream();os.write("Hello,thisisserver!".getBytes());//向客户端发送数据byte[]buf=newbyte[100];intlen=is.read(buf);//从客户端读取数据System.out.println(newString(buf,0,len));4、最后关闭通信套接字。os.close();is.close();s.close();建立连接后,客户端可以发出向Socket写数据的请求,服务器端则会对这个请求进行处理,并将处理结果通过Socket返回。服务器端则会对客户端进行监听,当监听到客户端有连接请求时,客户端就会与服务器端建立一个通信连接。同时,客户端被分配一个与Socket连接的本地端口号,服务器也会获取一个本地端口号。Socket之通信主要使用TCP和UDP两种协议,UDP和TCP套接字用于传输延迟敏感的,但耐错误的数据流,例如多媒体流的应用程序产生的数据,适不适合的[11]。面向连接的套接字使用的是TCP协议,该协议可以保证数据的可靠传输;无连接的套接字通信使用的是UDP协议,该协议不能保证数据的可靠传输和连接的有效性。1、使用TCP协议进行通信必须完成以下过程,如图1.1所示。客户端通过Connect方法连接到指定的服务器;通过write方法向服务器发送服务请求;通过read从服务端接收数据。服务器端使用Bind方法绑定所指定的端口使Socket与一个本地端口相联;使用Listen方法监听该端口上的请求;当监听到用户端发出的连接请求时,调用Accept完成连接的操作;处理客户端请求后,使用write方法将数据返回给客户端;建立新的Socket以处理传入的连接请求。2、使用UDP通信必须完成以下过程,如图1.2所示。客户端通过Connect方法连接到指定的服务器;通过write方法向服务器发送服务请求;通过read从服务端接收数据;44 服务器端使用Bind方法绑定所指定的端口使Socket与一个本地端口相联;使用Listen方法监听该端口上的请求;当监听到用户端发出的连接请求时,服务器端处理连接请求;使用write将结果返回到客户端。图1.1面向连接的客户机/服务器交互过程44 图1.2面向无连接的客户机/服务器交互过程第四节Eclipse简介Eclipse是一个开放源代码、基于Java的可扩展的开发平台。其实它只是一个框架和一组服务,用于通过插件组成构建开发环境。Eclipse附带了一个标准的插件集,包括Java开发工具(JavaDevelopmentKit,JDK)。Eclipse还包括插件开发环境(Plug-inDevelopment44 Environment,PDE),这个组件主要是针对希望把Eclipse扩展的软件开发人员,因为它允许构建与Eclipse环境无缝集成的工具。由于Eclipse中的每样东西都是插件,对于给Eclipse提供插件,以及用户提供一致和同意的环境而已,所有工具开发人员都具有同等的发挥场所。Eclipse的本身只是一个框架平台,但是由于很多插件的支持使得Eclipse拥有其他功能相对固定的IDE软件很难具有灵活性。许多软件开发商以Eclipse为框架开发自己的IDE。Eclipse是一个开放源码项目,由于开放源码,任何人都可以免费得到,并可以在此基础上开发各自的插件,因此越来越受人们的关注。第四节MySQL简介MySQL是目前最为流行的开放源码的数据库管理系统(DBMS),是完全网络化的跨平台的关系型数据库系统,它是由瑞典的MySQLAB公司开发、发布并支持的。它被广泛的应用在Internet上的大型网站开放中[12][13]。MySQL最初的开发出发点是使用MySQL来连接用户的表,这类表采用了快速低层面(ISAM)子程序。然而,经过一些测试后,发现MySQL的速度或灵活性不能满足用户的需求。所以为用户的数据库提供新的SQL接口,但API接口与MySQL的几乎一样。MySQL一直专注于速度、可靠性、扩展性和易用性,而且在发展过程中,不断引入了一些企业级特性,包括复制、全文搜索、事件、外键完整性、行级锁定等。同时在MySQL5中,还进一步引入视图、存储过程、触发器等高级特性,使得MySQL能进一步满足企业级应用的需要。MySQL具有如下的优势:1、速度:MySQL的运行速度很快。2、价格:MySQL对很多个人使用来说是免费的。3、容易使用:与其他大型数据库的设置和管理相比,其复杂程度低,容易学习。4、可移植性:能够在很多不同的系统平台上工作,如Windows、Linux、Unix、MacOS等。5、丰富的接口:MySQL提供了用于C、C++、Eiffel、Java、Perl、PHP、Python、Ruby和Tcl等语言的API。6、支持查询语言:MySQL可以利用标准SQL语法和支持ODBC(开放式数据库连接)的应用程序。7、44 安全性和连接性:十分灵活和安全的权限和密码系统,允许基于主机的验证。连接到服务器时,所有的密码传输均采用加密形式,从而保证了密码安全。并且由于MySQL是网络化的,因此可以在因特网上的任何地方访问,提供数据共享的效率。本章小结本章主要介绍了开发网络聊天系统所使用到的工具,介绍了客户机/服务器模型、Java、Socket、Eclipse和MySQL。从使用的工具可以看出,该系统使用的c/s开发模型,使用JDK+Eclipse作为开发技术平台,以MySQL作为数据库,使用Socket作为理论基础。这些工具对于该系统来说必不可少。44 第二章系统分析第一节可行性分析可行性分析(FeasibilityAnalysis)也称为可行性研究。它是以系统调查为基础,针对开发新系统是否具有必要性和可能性,对新系统的开发从技术、经济、社会的方面进行分析和研究,从而避免投资失误,保证新系统成功开发。可行性研究是为了用最小的代价在尽可能短的时间内确定问题能否解决。可行性分析包括以下几个方面的内容。经济可行性:从经济可行性角度出发,在开发系统的过程中,必须要考虑如何节约开发成本,缩短开发周期,用最少的成本获取最大的回报。为了保证软件产品的质量,系统的开发周期一般都是在一个月左右,并且要保证有充裕的时间进行调研和测试。本系统开发经费对于企业来说经济上是可以接受的,开发该网络通信系统所需的软件环境(Eclipse开发工具和数据库MySQL)和所需的硬件环境(计算机及其相关硬件),在市场上都很容易买到而且很便宜,或者也可以在相关网站上进行免费下载。开发该系统成本就要集中在系统的开发和维护上,对用户不会造成经济负担。而且当系统投入使用后,企业内部交流工具也可以使用该系统,一方面保证了内部信息的安全,一方面也充分利用了网络资源。所获得的效益将远远超过系统开发的成本,所以在经济方面是可行的。技术可行性:该系统使用的开发语言是Java,由于Java语言具有跨平台性,所以很多编程者都会选择它。经过多年的发展Java虚拟机已经具有很高的版本,在性能上也有了很大的提高,在API函数方面有了许多扩充和冗余的精简。本系统采用C/S架构。因为C/S具有一定的灵活性、通用性和易操作性等特点,是用户对来说是一个比较好的选择。目前这种架构在系统架构方面被广泛采用,在系统架构上已经积累了大量的经验,所以本系统在技术上是可行的。社会可行性:随着计算机的发展和普及,以及互联网技术的发展,很多公司和企业都能够提供局域网信息服务。而网络聊天系统只需要用户的电脑进入局域网就能访问,不必购买其他任何昂贵设备,大大节约了资金。无论从技术可行性、经济可行性还是社会可行性来说,系统的设计与实现都是可行的。44 第二节业务流分析对系统的组织结构和功能分析时,可以将系统分为:网络聊天客户端、网络聊天服务器端和数据库三个部分。对系统的组织结构和功能进行分析时,需要以一个实际业务流程的角度将系统调查中有关该业务流程的资料都联系起来作为下一步的分析基础。业务流程分析可以帮助我们了解业务的具体处理过程,发现和处理系统的调查工作中的欠缺和错误,修改和删除原系统的不合理部分,在新系统基础上优化业务处理流程。图2.1为该系统的业务流程图,该系统的业务流程如下:1、启动系统的服务器,客户端运行程序,出现登录界面。2、点击注册,客户端向服务器端发出注册请求,若注册成功,回到登录界面。3、用户点击登录,客户端向服务器端发出登录请求,服务器将用户信息与数据用户信息进行匹配,若匹配成功,用户进入功能界面;反之,则提示用户密码错误。4、用户登录后,客户端向服务器发送处理某些事件的请求,如私聊、群聊、文件传输等。5、服务器将信息准确转发到用户。第三节需求分析软件需求说明能把软件功能和性能的总体概念描述为具体的软件,从而奠定软件开发基础。该过程将软件计划阶段所确定的软件范围逐步细化到可详细定义的程度并分析出各种不同的软件元素,然后为这些元素找到可行的解决方法。总的来说,是对软件计划阶段建立的软件工作范围的求精和细化。它回答了“系统该做什么”的问题[14]。一、系统设计目标44 网络聊天系统主要对象是局域网内的用户,使用交流更简单。设计本系统的目标如下:1、一台电脑上能够同时登录多个不同的用户。2、用户注册。用户通过填写基本资料进行注册,用户基本信息被数据库保存。3、用户登录。用户使用注册时的用户名和密码登录系统。4、聊天。用户登录成功后,可以向单个或所有在线好友发送消息。5、文件传输。用户之间除了能够使用文字交流外,还能共享文件。二、系统功能需求1、注册用户首先要进行注册。用户在注册时需要填写用户名、密码等相关信息。系统将该用户名作为登录的账号。2、登录① 登录时用户用注册的用户名进行登录。② 用户点击登录按钮,客户端将用户信息发送到服务器,服务器对用户信息进行验证,返回相应的验证结果。若验证成功,用户进入主界面;若验证失败,则返回错误信息,用户回到登录界面。3、聊天该系统只能对在线好友进行聊天。聊天可以分为私聊和群聊。① 私聊:私聊就是两人之间的聊天,及一对一的聊天。② 群聊:群聊就是多人之间的聊天,及一对一的聊天。4、文件传输该系统文件传输可以分为发送文件和接收文件。① 发送文件:用户通过本系统将本地文件发送给在线好友。② 接收文件:用户接收好友分享的文件,并将文件保存在本地。44 图2.1系统业务流程图本章小结本章主要对网络聊天系统的可行性、业务流和需求进行了分析。在需求分析中,分析了该系统的设计目标和功能需求,该系统的主要功能包括注册、登录、聊天和文件传输。44 第三章系统概要设计第一节系统总体描述能够说明系统软件功能组成模块的就是系统体系结构,其中包括具体有哪些模块,系统由哪些功能以及结构组成。图3.1是本系统的体系结构图:图3.1系统体系结构图本系统总的来说包括两个部分:服务器端和客户端。在服务器端主要是服务器控制模块,接收客户端发来的连接请求,根据客户端的要求将信息准确的转发到客户端。客户端主要包括四个模块,用户在第一次进入系统时,必须首先进行注册,服务器将用户注册的信息存入数据库,以便用户再次进入系统时不再注册;用户注册后就可以直接点击登录,登录时客户端将用户填写的信息发送到服务器,服务器将用户信息与数据中的信息进行匹配,若用户未登录且信息存在,就返回登录成功;用户登录成功后就进入到主界面,用户可以看到在线好友,点击单个用户就可以进行私聊,点击所有人选项就可以群聊。44 第一节模块设计一、注册模块设计连接服务器以后,用户填写注册用户名、密码和性别,然后客户端向服务器端发送用户注册的基本信息,服务器接收到信息后,服务器将用户信息存储在数据库,并提醒用户注册成功。若用户注册失败,则返回用户注册失败。二、登录模块设计1、用户注册后,直接点击登录按钮,就可以直接进入主界面。若用户之前已经注册,那么登录时,用户需要填写用户名、密码和性别。2、用户填写资料后,点击登录按钮。客户端向服务器发送登录请求。登录时,如用户点击退出按钮,则用户将退出登录系统;若不退出,服务器接收到客户端发送的登录请求后,将用户信息与数据库中存储的用户信息进行匹配。3、服务器异常,若连接服务器失败,则显示错误,系统将停留在登录界面。4、若通过验证,返回用户信息,同时向用户显示在线好友信息。三、聊天模块设计1、用户登录成功后,就进入到聊天页面。用户在用户列表中可以看到在线用户。2、若用户需要进行私聊,则用户可以在用户列表中双击需要聊天的好友,然后必须勾选私聊框。3、若用户私聊,还可以在界面下方的组合框中选择好友,也必须勾选私聊框。4、若用户需要进行群聊,可以好友列表中选择所有人,或者在界面下方的组合框中选择所有人,不需要勾选私聊框。5、在信息输入框中输入需要发送的信息,点击发送信息按钮,就可以发出信息。6、用户在自己的聊天框中可以看到之前发送的信息以及发送对象。四、文件传输模块1、44 用户点击打开文件按钮,及可以弹出本地文件,用户可以在本地盘中选择将要发送的文件。1、选择好文件以后,点击打开,然后选择的文件就会出现在用户发送文件的框中。2、用户在点击发送之前,必须先将发送文件框中的文件选中。3、用户选择文件的接收对象。4、点击发送文件,文件就会被发送出去。5、好友将会收到系统发出的文件接受提醒。6、好友选中用户发来的文件,点击接收文件按钮。7、点击接收文件按钮之后,将弹出一个保存文件框,好友就可以将文件保存在电脑的本地盘中。8、在接收文件时,需要对文件进行命名,好友在命名时必须在自己加上文件的后缀名,否则会打开失败。9、好友接收文件后,若文件发送完成,在用户这边将进行提醒,然后将文件发送框进行清空。第三节数据库设计一、设计原则数据库在设计过程中会遇到很多数据的问题,如数据的丢失,数据的不正确,不匹配的数据和不准确的信息。一个差的数据库设计通常是这些类型的问题根本原因[15]。因此一个好的数据库就需要有一定的设计原则。在数据库设计中,原始单据与实体之间可以是一对一、一对多、多对多的关系。主键与外键之间一般是一个实体既不能无主键也不能无外键,主键是实体的高度抽象,主键与外键的配对,表示实体之间的连接。在创建表时一定要注意表的原子性,即基本表中的字段是不能再分解;原始性,基本表中的记录是原始数据的记录;演绎行,基本表与代码表中的数据可以派生出所有的输出数据;稳定性,基础表的结构式相对稳定,表中的记录需要长期保存。在设计过程中设计范式的要求[16]是:1、第一范式(1NF):数据库中的每一列都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性。2、44 第二范式(2NF):要求数据库表中的每个实例或行必须可以被唯一区分。为实现区分,通常需要为表加上一个列,用来储存各个实例的唯一标识。1、第三范式(3NF)要求数据库表中不包含已在其他表中已包含的非主关键字信息。二、具体步骤1、数据库需求分析数据库在一个项目编写过程中起着非常重要的作用。数据库需求分析的步骤分为:调查机构情况、熟悉业务活动、明确用户需求、去顶系统边界、分析系统功能、分析系统数据和编写分析报告,其中与用户不断深入地进行交流,获得用户的实际需求是数据库设计中一个很重要的步骤。2、数据字典数据字典是系统中各类数据描述的集合,是进行详细的数据收集和数据分析所获得的主要成果。对于该系统,对应相应的功能,就可得出数据字典的主要部分。该系统的主要数据结构如表3.2。表3.2数据结构表数据结构名含义说明组成部分用户包含用户基本信息用户名、密码等3、数据库概念结构设计将需求分析得到的用户需求抽象为信息结构即概念模型的过程就是概念结构设计。概念结构设计是整个数据库设计的关键。概念结构是各种数据模型的共同基础。描述概念模型的有力工具是实体-联系图(E-R图)。对于该聊天系统,由于对功能的要求不太复杂,所以其概念设计采用自顶向下地进行需求分析,和自底向上地设计概念结构。该系统的实体有一个,即用户实体,其中实体图如下:图3.3用户实体图44 在该系统中,由于一个用户可以与多个在线用户进行交流,所以用户与用户之间的关系是多对多的关系,即m对n的联系,所以该网络系统的E-R图如下:图3.4系统的E-R图4.、数据库逻辑结构设计数据库概念设计所得的E-R模型是对用户需求的抽象表达方式,它独立于任何一种具体的数据模型,所以它不能为任何一个具体的DBMS支持。为了能够建立起最终的物理系统,需要将概念结构进一步转化为某一DBMS支持的数据模型,然后根据逻辑设计的准则、数据的语义约束、规范化理论等对数据模型进行适当的调整和优化,形成合理的全局逻辑结构,并设计出用户子模式。这就是数据库逻辑设计所要完成的任务。对于该系统,可以将逻辑概念结构转换为一般的关系模型。该系统所涉及到的数据表有一张,用来存放用户信息。表3.5userinfo(用户表)对应的实体是用户,用来存放用户信息,用户信息包括用户名和用户密码。表3.5userinfo列名数据类型是否为空备注usernamevarchar否用户名passwdvarchar否用户密码本章小结44 本章主要介绍了网络聊天系统的模块包括服务器模块和客户端模块,客户端模块主要包括注册、登录、聊天和文件传输四个模块。在模块设计中这些模块进行了具体介绍。还介绍了系统的数据库设计原则和步骤。44 第四章系统实现第一节数据库模块实现一、数据流图在对用户需求分析完成后,可以用数据流图用来描述数据在系统中流动和变换的过程,表达数据与处理过程中的关系。该系统的主要功能是用户登陆后与其他在线用户进行聊天,所以该系统的初步数据流图如下:图4.1初步数据流图用户A与用户B进行通信,若A没有用户名没有注册,则首先用户A先填写注册信息,然后点击注册,服务器返回注册成功信息。A点击登录,客户端向服务器发出登录请求,服务器处理请求之后,返回信息。用户A进入到聊天界面,在信息输入框中填写信息,选择用户B,点击发送信息,信息就可以发给用户B。二、数据库的连接44 用户在进行注册、登录时,服务器将与数据库建立连接。启动服务器后,服务器开放端口9999,接收客户端发来的信息。Java用Class.forName()方法来加载驱动,在MysqlDriver.java的getCon()方法中创建数据库的连接,同时返回该连接。其主要代码如下:try{Class.forName("com.mysql.jdbc.Driver");//加载JDBC驱动}catch(ClassNotFoundExceptione){System.out.println("加载驱动异常!。。。");e.printStackTrace();}try{con=DriverManager.getConnection("jdbc:mysql://localhost/userinfo?user=root&password=123456");//连接数据库}catch(SQLExceptione){System.out.println("获得连接异常!。。。");e.printStackTrace();}returncon;数据库加载成功后,用DriverManager的getConnection()方法实现数据库连接。第二节注册模块实现一、功能描述用户启动客户端以后,就会出现一个注册窗口,若用户是第一次使用本系统,则需要注册一个账号。用户填写信息以后,客户端向服务器发送用户注册的基本信息,服务器接收到用户信息以后,进行用户名匹配,若没有匹配到相同的用户名,服务器就将该用户的基本信息存储在数据库中,同时返回注册成功信息。该系统的注册流程如图4.2。44 图4.2注册流程图二、主要实现代码:当用户启动客户端,首先出现一个注册窗口。窗口上包括三个按钮:登录、注册、退出。若用户点击“退出”按钮,则将调用类Chat中的方法actionPerformed()使用if语句if(e.getSource==quit)来处理事件,采用System.exit(-1)关闭窗口,退出系统。若用户点击“注册”按钮,客户端将用户信息发送到服务器端。服务器启动后,调用类FriendsThread对用户的注册请求进行监听,当客户端发来注册请求和用户信息之后,调用类DtatBases中的方法isuser()将用户名进行匹配,若没有在数据库中找到该用户名,Stringsql="insertintouserinfovalues('"+t[1]+"','"+t[2]+"')"将用信息添加到数据库,同时返回注册成功给客户端。dout.writeUTF("regedit,"+jusername.getText()+","+jpasswd.getText());Strings1=din.readUTF();if(s1.equals("成功注册")){JOptionPane.showMessageDialog(null,s1);}elseif(s1.equals("该用户名已经被注册")){JOptionPane.showMessageDialog(null,s1);}else{JOptionPane.showMessageDialog(null,"注册失败");44 第三节登录模块实现一、功能描述用户进行注册后,在登录界面中输入用户名和密码以后,点击登按钮。客户端向服务器发送登录请求和好友基本信息,服务器将用户的信息与数据库中的信息进行匹配,若匹配成功,用户进入主界面;若匹配不成功,则返回到登录窗口系统的登录流程图如图4.3。二、主要实现代码:用户在注册以后,只需要填写用户名和密码,点击登录按钮。客户端向服务器发送登录请求,服务器调用类FriendsThread建立一个新的Socket,然后调用其中的run()方法,在run方法中调用DataBase.java中的ispasswd()对用户的用户名和密码进行匹配。if(newDataBases().isuser(t[1])){if(newDataBases().ispasswd(t[1],t[3])){dout.writeUTF("成功登录");System.out.println(t[1]+":进入了聊天系统");UserVouser=newUserVo(t[1],t[2],socket);newRemind().remindOne(socket);//显示所有在线用户LoginUser.map.put(t[1],user);newRemind().remindAll(user);//提醒所有用户该用户已上线当服务器匹配成功后,向客户端发送登录成功的信息。用户进入主界面后,同时提醒所有在线用户该用户上线。然后调用UserVo.java中的UseVo(Stringusername,Stringsex,SocketSoc)和Remind.java中的remindOne()和remindAll将用户信息显示在好友列表中,同时在用户自己的好友列表中显示当前在线用户,在其他用户的好友列表中,将该用户的信息显示出来。44 图4.3登录流程图第四节聊天模块实现一、功能描述用户登录成功后将进入主界面,用户在主界面中将看到在线用户。该用户可以选择单个用户进行私聊,也可以与当前所有人进行群聊。用户在选择用户进行私聊时,可以在好友列表中选择用户,也可以在组合框中选择用户名,进行私聊必须勾选私聊框。二、主要代码实现用户在选择与在线用户私聊时,客户端调用MainFrame.java中的valueChanged()监听用户是都在好友列表中选择了用户Strings1=s.substring(0,s.indexOf("【"));jc1.setSelectedItem(s1);//使组合框的好友也为选中的好友当用户选择用户以后,组合框中的用户也变成被选择的用户。同时,用户进行私聊时必须勾选私聊框,调用该类中的itemStateChanged()来判断用户是否勾选了私聊框。用户在输入框中输入聊天消息,点击“发送消息”按钮之后,客户端就将聊天信息、信息发送者和信息接收者信息发送给服务器,dout.writeUTF("info,"+sendname+","+jla1.getText()+","+send1.getText());send1.setText("")44 发送给服务器以后,信息数据库就自动清空。服务器端接受到客户端发出的信息后,调用LoginUser.java寻找信息接收者的信息基本信息,user=LoginUser.map.get(sendname);soc=user.getSoc();dout=newDataOutputStream(soc.getOutputStream());dout.writeUTF(sendname+","+sayname+","+info)服务器找到用户信息后,就将信息和信息发送者转发到该用户。该用户的用户频道中将显示消息内容、信息发送者和系统当前时间。同样在发送信息用户的用户频道中也将显示用户发送信息的内容、信息接收者和系统当前时间。用户与所有用户群聊时,可以在好友列表中选择“所有人”或者在组合框中选择“所有人”项,其实现方法与私聊差不多,只是不需要勾选私聊框。在服务器端if(sendname.equals(".........所有人.........")){for(Strings:LoginUser.map.keySet()){System.out.println(s);user=LoginUser.map.get(s);soc=user.getSoc();dout=newDataOutputStream(soc.getOutputStream());dout.writeUTF("all,"+sayname+","+info);服务器在LoginUser.java中得到所有用户的信息,所有用户都将获得一个Socket,服务器将信息内容和信息发送者准确转发到每一个用户。在客户端,每个用户的主频道上显示信息发送者和信息内容。第五节文件传输模块实现一、功能描述用户在好友列表中选择发送文件的对象,点击“打开文件”按钮,弹出一个文件选择框,用户可以选择本地文件作为传输文件。用户选择好文件后,就可以点击“发送文件”按钮,将文件发送出去,文件发送文件流程图如图4.4。文件接收者在文件接收框中选择文件,点击“文件接收”按钮,弹出文件保存对话框,用户选择文件保存路径,为文件命名,命名时加上文件的后缀名,文件接收完成后,可以将文件打开,接收文件流程图如图4.5。44 图4.4发送文件流程图图4.5文件发送流程图一、主要实现代码用户点击“打开文件”按钮后,客户端调用MainFrame.java中的actionPerformed(),使用FileDialogf=newFileDialog(this);f.setVisible(true);弹出一个文件选择对话框,并将其设置为可见。用户选择文件后,在发送文件框中显示出文件的路径,用户点击“文件发送”按钮后,客户端将文件发送者、文件接受者和文件信息发送给服务器,然后调用MainFrame.java中的类sendfilethread中的run()。dout.writeUTF("send,"+jla1.getText()+","+jc1.getSelectedItem()+","+(String)jl2.getSelectedValue());filename=(String)jl2.getSelectedValue();sendfilethreads=newsendfilethread();s.start();服务器端接受到客户端发来的信息,调用LoginUser.java找到文件接收者的基本信息。服务器获得用户的端口号和网络地址,然后将文件进行转发。Stringip=soc.getInetAddress().getHostAddress();dout.writeUTF("take,"+sendfromname+","+sendname+","+sendfile);当好友接收到接收文件的提示后,好友选中文件,点击“接收文件”按钮后,弹出一个对话框,好友可以选择文件的保存路径JFileChooserjfc=newJFileChooser();intresult=jfc.showSaveDialog(MainFrame.this),然后启动线程accepfilethread()接收文件。while((len=ddin.read())!=-1){//若数据没有读取完,则执行该循环bo.write(len);//把缓冲区的数据写入bo.flush();//清空缓冲区中的数据}bo.close();fileon.close();44 JOptionPane.showMessageDialog(MainFrame.this,"文件接收完成");本章小结本章主要介绍了网络聊天系统的具体实现,介绍了数据库、注册、登录、聊天和文件传输具体实现代码和流程图,深入介绍了系统的整体设计。44 第五章系统测试第一节服务器模块测试用户进行注册和登录之前,必须先启动服务器,只有在服务器开启的情况下,才能保证用户的注册、登录等功能顺利实现。运行服务器程序后,将出现如图5.1所示的界面,用户点击“启动”按钮后,服务器将启动,等待用户的连接,如图5.2。图5.1初始界面图5.2启动服务器44 第一节注册模块测试当用户运行客户端程序后,就会出现注册窗口,用户可以在该窗口中填写基本信息进行注册,如图5.3所示。图5.3注册初始界面用户进行注册之前,必须先填写用户名、密码和选择性别,如图5.4所示。图5.4输入用户信息用户将所有信息填写完成后,点击“注册”按钮,系统将出现“注册成功”信息,如图5.5;若其中用户名或密码为填写,将出现错误提示,如图5.6。若改用名已经被注册,系统将提醒用户,如图5.7.图5.5注册成功44 图5.6错误提示图5.7用户名以被注册第一节登录模块测试用户注册后,直接点击“登录”按钮,若用户已登录,系统将提示用户,如图5.8所示。若用户之前未登录,则用户登录将进入主界面,如图5.9。图5.8用户已登录44 图5.9用户登录成功第一节聊天模块测试该模块提供了私聊和群聊功能,用户在好友列表中选则单个用户,则可进行私聊,如图5.10所示。图5.10选择单个好友用户选择好友后,就可以在输入框中输入信息,如图5.11。点击“发送信息”按钮,输入的信息被发送出去,如图5.12.图5.11输入信息44 图5.12发送信息用户在好友列表中选择“所有人”就可以进行群聊,如图5.13。图5.13选择群聊对象用户在输入框中输入信息,点击“发送信息”按钮,就可以将信息发送给所有在线用户,如图5.14。图5.14发送群消息第一节文件传输模块测试该模块提供了发送文件和接收文件功能。用户点击“打开文件”按钮,弹出一个选择文件的对话框,用户可以在其中选择文件发送,如图5.15所示。用户在对话框中选中文件,文件名和文件路径将显示在发送文件框中,用户选择文件,点击“发送文件”按钮,文件被发送出去,如图5.16。44 图5.15选择文件图5.16选中文件用户接收文件时,先选中被接收的文件,然后点击“接收文件”按钮,弹出保存文件对话框,用户可以将文件保存在本地,如图5.17。图5.17保存文件44 本章小结本章主要进行了对系统的测试,包括服务器模块、注册模块、登录模块、聊天模块、文件传输模块等五个模块的测试,并给出了实现结果,将每一个模块的实现步骤都以图的形式表现出来,使得结构更加明显。44 44 44 附录一、英文原文T/TCP:TCPforTransactionsT/TCPisanexperimentalextensionfortheTCPprotocol.Itwasdesignedtoaddresstheneedforatransaction-basedtransportprotocolintheTCP/IPstack.TCPandUDParethecurrentchoicesavailablefortransaction-basedapplications.TCPisreliablebutinefficientfortransactions,whereasUDPisunreliablebuthighlyefficient.T/TCPsitsbetweenthesetwoprotocols,makingitanalternativeforcertainapplications.Currently,severalflavoursofUNIXsupportT/TCP.SunOS4.1.3(aBerkeley-derivedkernel)wastheveryfirstimplementationofT/TCP,andmadeavailableinSeptember1994.ThenextimplementationwasforFreeBSD2.0,releasedinMarch1995.Formyfinal-yearproject,IimplementedT/TCPforLinuxattheUniversityofLimerickinApril1998.Thesourcecodeisavailableathttp://www.csn.ul.ie/~heathclf/fyp/.Inthisarticle,Idiscusstheoperation,advantagesandflawsofT/TCP.ThiswillallowapplicationdeveloperstodecidewhenT/TCPisappropriatefornetworkingapplications.IpresentmyresultsfromacomparativeanalysisbetweenT/TCPandTCP,basedonthenumberofpacketspersessionforeachtransaction.IalsogivemyconclusionsfromacasestudyIconductedintothepossibleimpactofT/TCPontheWorldWideWeb.IntroductionTheTCP/IPreferencemodelisaspecificationforanetworkingstackonacomputer.Itexiststoprovideacommongroundfornetworkdevelopers.Thisallowseasierinterconnectionofthedifferentvendor-suppliednetworks.ThemostpopularimplementationsofthetransportlayerinthereferencemodelareTransmissionControlProtocol(TCP),aconnection-orientedprotocol,andUser44 DatagramProtocol(UDP),aconnectionlessprotocol.Bothoftheseprotocolshaveadvantagesanddisadvantages.Thetwomainaspectsoftheprotocolsmakethemusefulindifferentareas.Beingaconnectionlessprotocol,UDPisunreliablebutfastandusefulforapplications,suchasDNS(DomainNameSystem),wherespeedispreferredoverreliability.TCP,ontheotherhandisareliable,connection-orientedprotocol.Asaresult,TCPisaslowerprotocolthanUDP.WiththeexplosionoftheInternetinrecentyears,theneedforanewspecificationarose.Thecurrenttransportprotocolswereeithertooverboseornotreliableenough.AprotocolwasneededthatwasfasterthanTCPbutmorereliablethanUDP.Thisnewprotocolcouldreducebandwidthandincreasethespeedoftransmissionofdata,whichisverymuchneededatthemoment.TCPforTransactions(T/TCP)isapossiblesuccessortobothTCPandUDP.Itisatransaction-orientedprotocolbasedonaminimumtransferofsegments,soitdoesnothavethespeedproblemsassociatedwithTCP.BybuildingonTCP,itdoesnothavetheunreliabilityproblemsassociatedwithUDP.Withthisinmind,RFC1379waspublishedinNovember1992.ItdiscussedtheconceptsinvolvedinextendingtheTCPprotocoltoallowforatransaction-orientedservice.SomeofthemainpointstheRFCdiscussedwerebypassingthethree-wayhandshakeandshorteningtheTIME-WAITstatefrom240secondsto12seconds.Eighteenmonthslater,RFC1644waspublished,withthespecificationforTransactionTCP.T/TCPcutsoutmuchunnecessaryhandshakinganderrordetectiondonebythecurrentTCPprotocol,andasaresult,increasesthespeedofconnectionandreducesthenecessarybandwidth.TransactionTransmissionControlProtocolT/TCPcanbeconsideredasupersetoftheTCPprotocol.ThereasonforthisisthatT/TCPisdesignedtoworkwithcurrentTCPmachinesseamlessly.WhatfollowsisabriefdescriptionofT/TCPandhowitdiffersfromthecurrentTCPstandardinoperation.WhatisaTransaction?Theterm``transaction''referstotherequestsentbyaclienttoaserver,alongwiththeserver'sreply.RFC955listssomeofthecommoncharacteristicsoftransactionprocessingapplications:44 ·AsymmetricalModel:thetwoendpointstakedifferentroles;thisisatypicalclient-serverrolewheretheclientrequeststhedataandtheserverresponds.·ShortDuration:normally,atransactionrunsforashorttimespan.·FewDataPackets:eachtransactionisarequestforasmallpieceofinformation,ratherthanalargetransferofinformationbothways.BackgroundtoT/TCPThegrowthoftheInternethasputastrainonthebandwidthandspeedofnetworks.Therearenowmoreusersthanever,andamoreefficientformofdatatransferisneeded.Theabsoluteminimumnumberofpacketsrequiredinatransactionistwo:onerequestfollowedbyoneresponse.UDPistheoneprotocolintheTCP/IPprotocolstackthatallowsthis,buttheproblemistheunreliabilityofthetransmission.T/TCPhasthereliabilityofTCPandcomesveryclosetorealizingthe2-packetexchange(threeinfact).T/TCPusestheTCPstatemodelforitstimingandretransmissionofdata,butintroducesanewmechanismtoallowthereductioninpackets.EventhoughthreepacketsaresentusingT/TCP,thedataiscarriedonthefirsttwo,thusallowingtheapplicationstoseethedatawiththesamespeedasUDP.Thethirdpacketistheacknowledgmenttotheserverbytheclientthatithasreceivedthedata,whichishowtheTCPreliabilityisincorporated.44 二、英文翻译T/TCP:TCP进行交易T/TCP是TCP协议的一个实验性的扩展。它被设计为以交易为基础的传输协议为TCP/IP协议栈解决需要。TCP和UDP是目前可供选择的以交易为基础的应用程序。TCP是可靠的,但交易效率低下,而UDP是不可靠的,但是高效的。T/TCP介于在这两个协议之间,对应于某些应用的替代。目前,有几个不同的UNIX版本支持T/TCP。OS4.1.3(伯克利派生出来的内核)第一个实施T/TCP,并于1994年9月提供。下一个实施免费的BSD2.0,发布于1995年3月。对于我最后一年的项目,我实现了T/TCP利默里克大学,于1998年4月的Linux。源代码是可用,在http://www.csn.ul.ie/〜heathclf/FYP/中。在这篇文章中,我讨论了操作T/TCP的优点和缺陷。这将允许应用程序开发人员来决定T/TCP是适合于网络应用。我提出我的T/TCP和TCP协议,基于每个会话的数据包为每个交易的数量之间的对比分析结果。我也给我的T/TCP在万维网上,可能产生的影响进行了案例研究。1、介绍一个网络栈的计算机上的TCP/IP参考模型是一种规范。它的存在是为了给网络开发者提供一个共同的基础。这使得不同的供应商提供的网络更容易互连。最流行的实现在参考模型中的传输层是传输控制协议(TCP),一个面向连接的协议,用户数据报协议(UDP),一个无连接的协议。这两种协议都具有优点和缺点。主要有两个方面的协议使他们在不同的领域非常有用。作为一个无连接的协议,UDP是不可靠的,但快速,有用的应用程序,如DNS(域名系统),速度优于可靠性。TCP,在另一方面,是一个可靠的,面向连接的协议。其结果是,TCP比UDP协议是一个缓慢的。由于近年来互联网的发展,产生一个新的规范需要。电流传输协议不是太详细或不够可靠。需要一个协议比TCP快,但比UDP更加可靠。这个新的协议可以减少带宽和增加的速度传输数据,这是非常必要的。交易(T/TCP)TCP是TCP和UDP的继任者。它是一种面向事务处理的协议,以最低字段为基础,所以它不存在与TCP速度相关的问题。同样,它不具有与UDP的不可靠性问题。考虑到这一点,讨论所涉及的概念扩展允许TCP协议面向事务处理服务。44 RFC讨论的要点绕过三次握手,并从240秒缩短到12秒TIME-WAIT状态。18个月后,RFC1644公布,规范交易TCP。T/TCP削减了许多不必要的握手和当前的TCP协议所需要通过的错误检测,其结果是,提高了连接速度,同时减少了不必要的带宽。2、交易传输控制协议可以认为T/TCP是TCP协议的一个超集。这样做的原因是,T/TCP的设计工作,与当前的TCP机无缝。下面是一个简要说明了T/TCP和它是如何操作从当前的TCP标准不同。3、什么是交易?术语“交易”是指由客户端发送到服务器的请求,以及与服务器的答复。RFC955列出一些事务处理应用程序的共同特点:非对称模型:两个端点采取不同的角色,这是一个典型的客户端-服务器角色数据和服务器响应客户端请求。短的时间:通常情况下,一个事务运行很短的时间跨度。一些数据包:每一笔交易相当于一小块的信息,而不是一个大的传输信息。4、T/TCP的背景在增长的互联网网络的带宽和速度上放置张力。由于现在比以往任何时候都更多的用户,并需要更高效的数据传输形式。在交易中所需的数据包最低数量是两个:一个请求,然后一个响应。UDP是在是TCP/IP的协议栈,这允许了一个协议不可靠的传输。T/TCP拥有TCP的可靠性,并实现2包交换(其实三)。T/TCP使用TCP状态模型的时间和重传的数据,但引入了一个新的机制,让包减少。尽管有3个数据包在传输时使用T/TCP,进行数据的前两个数据包是由服务器完成,从而使应用程序以同样的速度为UDP的数据报文的发送。44 学位论文原创性声明本人郑重声明:所呈交的学位论文,是本人在导师的指导下进行的研究工作所取得的成果。尽我所知,除文中已经特别注明引用的内容和致谢的地方外,本论文不包含任何其他个人或集体已经发表或撰写过的研究成果。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式注明并表示感谢。本人完全意识到本声明的法律结果由本人承担。学位论文作者(本人签名):年月日学位论文出版授权书本人及导师完全同意《中国博士学位论文全文数据库出版章程》、《中国优秀硕士学位论文全文数据库出版章程》(以下简称“章程”),愿意将本人的学位论文提交“中国学术期刊(光盘版)电子杂志社”在《中国博士学位论文全文数据库》、《中国优秀硕士学位论文全文数据库》中全文发表和以电子、网络形式公开出版,并同意编入CNKI《中国知识资源总库》,在《中国博硕士学位论文评价数据库》中使用和在互联网上传播,同意按“章程”规定享受相关权益。论文密级:□公开□保密(___年__月至__年__月)(保密的学位论文在解密后应遵守此协议)作者签名:_______导师签名:______________年_____月_____日_______年_____月_____日44 独创声明本人郑重声明:所呈交的毕业设计(论文),是本人在指导老师的指导下,独立进行研究工作所取得的成果,成果不存在知识产权争议。尽我所知,除文中已经注明引用的内容外,本设计(论文)不含任何其他个人或集体已经发表或撰写过的作品成果。对本文的研究做出重要贡献的个人和集体均已在文中以明确方式标明。本声明的法律后果由本人承担。 作者签名:二〇一〇年九月二十日 毕业设计(论文)使用授权声明本人完全了解滨州学院关于收集、保存、使用毕业设计(论文)的规定。本人愿意按照学校要求提交学位论文的印刷本和电子版,同意学校保存学位论文的印刷本和电子版,或采用影印、数字化或其它复制手段保存设计(论文);同意学校在不以营利为目的的前提下,建立目录检索与阅览服务系统,公布设计(论文)的部分或全部内容,允许他人依法合理使用。(保密论文在解密后遵守此规定) 作者签名:二〇一〇年九月二十日44 致谢时间飞逝,大学的学习生活很快就要过去,在这四年的学习生活中,收获了很多,而这些成绩的取得是和一直关心帮助我的人分不开的。首先非常感谢学校开设这个课题,为本人日后从事计算机方面的工作提供了经验,奠定了基础。本次毕业设计大概持续了半年,现在终于到结尾了。本次毕业设计是对我大学四年学习下来最好的检验。经过这次毕业设计,我的能力有了很大的提高,比如操作能力、分析问题的能力、合作精神、严谨的工作作风等方方面面都有很大的进步。这期间凝聚了很多人的心血,在此我表示由衷的感谢。没有他们的帮助,我将无法顺利完成这次设计。首先,我要特别感谢我的知道郭谦功老师对我的悉心指导,在我的论文书写及设计过程中给了我大量的帮助和指导,为我理清了设计思路和操作方法,并对我所做的课题提出了有效的改进方案。郭谦功老师渊博的知识、严谨的作风和诲人不倦的态度给我留下了深刻的印象。从他身上,我学到了许多能受益终生的东西。再次对周巍老师表示衷心的感谢。其次,我要感谢大学四年中所有的任课老师和辅导员在学习期间对我的严格要求,感谢他们对我学习上和生活上的帮助,使我了解了许多专业知识和为人的道理,能够在今后的生活道路上有继续奋斗的力量。另外,我还要感谢大学四年和我一起走过的同学朋友对我的关心与支持,与他们一起学习、生活,让我在大学期间生活的很充实,给我留下了很多难忘的回忆。最后,我要感谢我的父母对我的关系和理解,如果没有他们在我的学习生涯中的无私奉献和默默支持,我将无法顺利完成今天的学业。四年的大学生活就快走入尾声,我们的校园生活就要划上句号,心中是无尽的难舍与眷恋。从这里走出,对我的人生来说,将是踏上一个新的征程,要把所学的知识应用到实际工作中去。回首四年,取得了些许成绩,生活中有快乐也有艰辛。感谢老师四年来对我孜孜不倦的教诲,对我成长的关心和爱护。学友情深,情同兄妹。四年的风风雨雨,我们一同走过,充满着关爱,给我留下了值得珍藏的最美好的记忆。在我的十几年求学历程里,离不开父母的鼓励和支持,是他们辛勤的劳作,无私的付出,为我创造良好的学习条件,我才能顺利完成完成学业,感激他们一直以来对我的抚养与培育。最后,我要特别感谢我的导师赵达睿老师、和研究生助教熊伟丽老师。是他们在我毕业的最后关头给了我们巨大的帮助与鼓励,给了我很多解决问题的思路,在此表示衷心的感激。老师们认真负责的工作态度,严谨的治学精神和深厚的理论水平都使我收益匪浅。他无论在理论上还是在实践中,都给与我很大的帮助,使我得到不少的提高这对于我以后的工作和学习都有一种巨大的帮助,感谢他耐心的辅导。在论文的撰写过程中老师们给予我很大的帮助,帮助解决了不少的难点,使得论文能够及时完成,这里一并表示真诚的感谢。44

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
关闭