本科毕业论文:基于Mina框架的Java通讯层应用.doc

上传人:文****钱 文档编号:41400 上传时间:2018-05-09 格式:DOC 页数:22 大小:296.50KB
下载 相关 举报
本科毕业论文:基于Mina框架的Java通讯层应用.doc_第1页
第1页 / 共22页
本科毕业论文:基于Mina框架的Java通讯层应用.doc_第2页
第2页 / 共22页
本科毕业论文:基于Mina框架的Java通讯层应用.doc_第3页
第3页 / 共22页
本科毕业论文:基于Mina框架的Java通讯层应用.doc_第4页
第4页 / 共22页
本科毕业论文:基于Mina框架的Java通讯层应用.doc_第5页
第5页 / 共22页
点击查看更多>>
资源描述

1、学号0928524059基于MINA框架的JAVA通讯层应用学院名称软件学院专业名称计算机科学与技术年级班别2009级JAVA班姓名指导教师教授2013年05月河南师范大学本科毕业论文河南师范大学本科毕业设计2基于MINA框架的JAVA通讯层应用摘要APACHEMINASERVER是一个网络通信应用框架,它主要是对基于TCP/IP、UDP/IP协议栈的通信框架(当然,也可以提供JAVA对象的序列化服务、虚拟机管道通信服务等),MINA可以帮助我们快速开发高性能、高扩展性的网络通信应用,MINA提供了事件驱动、异步(MINA的异步IO默认使用的是JAVANIO作为底层支持)操作的编程模型。随着网

2、络通信的不断增加,用户对于服务器通讯层的要求也越来越高。如何提高服务器端程序的性能,如何使用一种高效的I/O底层,从而更容易地开发出高性能的网络应用程序,成为近年来通讯层研究的主要课题。通过对比,基于MHM(MINIMUMHARDWAREMODIFICATIO)框架的通讯层具有实现简单,性能高效的特点,是JAVA通讯层应用的推荐框架关键词MINA;JAVA;MHM;IO;NIO;SOCKET;SERVERSOCKET;TCP/IP;IOACCEPTOR;IOCONNECTOR;BUFFEREDREADER;BUFFER;CHARSET;CHANNELS;SELECTOR;J2EE;MYECLI

3、PSE;ENTERPRISE;JAVABEANS;MINASERVEBASEDONTHETHEMINAFRAMEWORKOFJAVACOMMUNICATIONLAYERAPPLICATIONSABSTRACTAPACHEMINASERVERISANETWORKCOMMUNICATIONAPPLICATIONFRAMEWORK,ITISPRIMARILYACOMMUNICATIONFRAMEWORKBASEDONTCP/IP,UDP/IPPROTOCOLSTACKOFCOURSE,ALSOCANPROVIDEJAVAOBJECTSERIALIZATION,THEVIRTUALMACHINEPIP

4、ECOMMUNICATIONSERVICES,MINACANHELPUSTOQUICKLYDEVELOPHIGHPERFORMANCE,HIGHLYSCALABLENETWORKCOMMUNICATIONSAPPLICATIONS,MINAPROVIDESEVENTDRIVEN,ASYNCHRONOUSASYNCHRONOUSIOMINASDEFAULTISTOUSEPROGRAMMINGMODELTHEJAVANIOASTHEUNDERLYINGSUPPORTOPERATIONWITHTHECONTINUOUSINCREASEINNETWORKTRAFFIC,USERSAREINCREASI

5、NGLYHIGHREQUIREMENTSFORTHESERVERCOMMUNICATIONLAYERTHEREFORE,HOWTOIMPROVETHEPERFORMANCEOFTHESERVERSIDEPROGRAM,HOWTOUSEAHIGHLYEFFICIENTI/OLOWLEVEL,MAKINGITEASIERTODEVELOPAHIGHPERFORMANCENETWORKAPPLICATIONSBECOMETHEMAINTOPICOFTHECOMMUNICATIONLAYERINRECENTYEARSMHMMINIMUMHARDWAREMODIFICATIONFRAMEWORKBASE

6、DCOMMUNICATIONLAYERHASASIMPLE,EFFICIENTPERFORMANCE,BYCONTRAST,ISTHETHEJAVACOMMUNICATIONLAYERAPPLICATIONSRECOMMENDEDFRAMEWORKKEYWORDSMINA;JAVA;MHM;IO;NIO;SOCKET;SERVERSOCKET;TCP/IP;IOACCEPTOR;IOCONNECTOR;BUFFEREDREADER;BUFFER;CHARSET;CHANNELS;SELECTOR;J2EE;MYECLIPSE;ENTERPRISE;JAVABEANS;MINASERVE。河南师

7、范大学本科毕业设计3目录前言41运用SOCKET实现通信的方式与关键技术411通过JAVA的SOCKET阻塞方式实现通信4111阻塞通信的服务器端4112阻塞通信的客户端412通过JAVA的SOCKET非阻塞方式实现通信错误未定义书签。13TCP/IP协议5131TCP、IP协议的特点5132TCP/IP数据的传输过程5133端口号614MINA架构剖析62NIO和IO的区别和比较721回顾IO722NIO的介绍和新I/O9221介绍NIO9222新I/O103程序设计与编码1131开发平台与工具11311J2EE平台11312集成环境1132具体代码实现步骤11321下载使用的JAR包113

8、22工程创建配置12323服务端程序12324客户端程序164系统说明书1941开发环境及工具1942本聊天室包括服务器和客户端两个部分1943具体的使用说明如下19参考文献20致谢20河南师范大学本科毕业设计4前言自进入21世纪以来,网络发展异常迅速,电脑走进了普通人的家中,成了我们生活中不可缺少的一部分,随着用户的激增,网络通信的不断增加,用户对于服务器通讯层的要求也越来越高,给现在的服务器端的正常运行带来了很大的压力。因此,如何提高服务器端程序的性能,如何使用一种高效的I/O底层,从而更容易地开发出高性能的网络通信程序,成为近年来通讯层研究的主要课题。本论文通过JAVA的SOCKET非阻

9、塞方式实现了一个局域网的通信。目前JAVA构建的网络应用程序框架有多种,较为流行的框架有GRIZZLY、NETTY、QUICKSERVER、XSOCKET、MINA等,通过对比,基于MINA框架的通讯层具有实现简单,性能高效的特点1,是JAVA通讯层应用的推荐框架。1运用SOCKET实现通信的方式与关键技术11通过JAVA的SOCKET非阻塞方式实现通信2非阻塞式通讯是指可以将通信操作交给特定的通信硬件去完成,而无需等到其完全完成便可以返回。在该通信硬件进行通信操作时,处理机可以同步进行计算操作,实现了计算与通信的重叠,从而提高整个程序的执行效率。但缺点是不易实现。12通过JAVA的SOCKE

10、T阻塞方式实现通信阻塞式通讯是指在每建立一个SOCKET连接的同时,创建一个新线程对该SOCKET避行单独通信34。这种方式编码简单,实现容易,对一定数量的连接性能比较好。但是如果客户端上限很大的情况下,就不能得到及时的响应,且对系统资源是一种浪费。121阻塞通信的服务器端服务器,使用SERVERSOCKET监听指定的端口,端口可以随意指定(由于1024以下的端口通常属于保留端口,在一些操作系统中不可以随意使用,所以建议使用大于1024的端口),等待客户连接请求,客户连接后,会话产生;在完成会话后,关闭连接。122阻塞通信的客户端客户端,使用SOCKET通信对网络上某一个服务器的某一个端口发出

11、连接请求,一旦连接成功,打开会话;会话完成后,关闭SOCKET。客户端不需要指定打开的端口,通常临河南师范大学本科毕业设计5时的、动态的分配一个1024以上的端口。13TCP/IP协议131TCP、IP协议的特点TCP/IP(TRANSMISSIONCONTROLPROTOCOL/INTERNETPROTOCOL)协议不是TCP和IP这两个协议的合称,而是指因特网整个TCP/IP协议族。从协议分层模型方面来讲,TCP/IP由四个层次组成网络接口层、网络层、传输层、应用层5。图一TCP/IP四层协议的表示方法举例IP协议的作用第一,它是网络层的协议,提供互联网上数据传输的统一格式。第二,提供不可

12、靠的无连接的服务。第三,定义了互联网上的传输数据的基本单元,提供了供路由选择的信息,没有差错校验和处理的机制。TCP协议的功能差错控制可靠性、面向连接、分段(SEGMENT)、端口号。TCP是传输控制协议,是面向连接的提供了一种可靠的传输服务,它用三次握手和滑动窗口机制来保证传输的可靠性,及进行流量控制。132TCP/IP数据的传输过程当你把要传送的数据传递给TCP后,TCP把这些信息分成很多个数据包这种数据包称为TCP分组,每一个分组都包含有一个序号。接着TCP分组被传递给IP层,IP层把这个TCP分组放在一个IP数据包的数据部分。然后,这个IP数据包被传到目的主机。目的主机上的IP层,把I

13、P数据包的数据部分即TCP分组传递给TCP层。TCP接收到分组后,检查数据包的正确性,如果不正确,通知源计算机重新送该IP包。利用分组的序号来将数据按照原来的顺序排列,然后送给应用层。河南师范大学本科毕业设计6133端口号逻辑意义上的端口,一般是指TCP/IP协议中的端口6,端口号的范围从0到65535,比如用于浏览网页服务的80端口,用于FTP服务的21端口等等。服务器一般都是通过知名端口号来识别的。例如,对于每个TCP/IP实现来说,FTP服务器的TCP端口号都是21,每个TELNET服务器的TCP端口号都是23,每个TFTP简单文件传送协议服务器的UDP端口号都是69。任何TCP/IP实

14、现所提供的服务都用知名的11023之间的端口号。这些知名端口号由INTERNET号分配机构(INTERNETASSIGNEDNUMBERSAUTHORITY,IANA)来管理。14MINA架构剖析MINAMULTIPURPOSEINFRASTRUCTUREFORNETWORKAPPLICATIONS是APACHE软件组织开发的一种作为基于NIO的一个多功能网络应用程序框架,使用JAVA技术实现,可以帮助用户快速构建稳定、高性能的网络应用程序。该框架的主要特点有基于JAVANIO设计。巧妙地采用松耦合架构;可灵活地加载过滤器机制;单元测试更容易实现;可自定义线程的数量,以提高运行于多处理器上的性

15、能采用回调的方式完成调用线程的使用更容易7。通过JAVA异步输入输出NIO8技术,可以方便的支持TCP/UDP协议灵活、可配置的线程模型,这对于网络通信程序来说尤其重要,用户可以根据实际需要选择符合自身的线程模型多编码方式支持,既可以使用字节流或者文本,也可以使用其它编码方式,如ASN1编码等。MINA框架的系统结构如图二所示。图二MINA系统机构示意图河南师范大学本科毕业设计7MINA框架主要由I/O服务管理IOSERVICE、I/O过滤器链IOFILTERCHAIN、I/O处理器IOHANDLER和I/O会话管理IOSESSION等模块组成。IOSERVICE负责与远端客户进行通信底层操作

16、,远端发送的数据首先由IOSERVICE接收并转化为系统内部可识别的事件,它的两个实现类IOACCEPTOR和IOCONNECTOR分别对应服务器端和客户端的I/O服务管理类然后,IOFILTERCHAIN接收由IOSERVICE转化的事件,并使用链中包含的过滤器IOFILTER进行处理,如日志记录、编码/解码、压缩和黑名单过滤等最后,IOHANDLER负责处理由过滤器链处理后的事件,业务逻辑大多在本模块中实现。处理完后,由IOSESSION负责与远端客户进行交互,即使用IOSESSION向远端发送的消息,该消息的发送顺序与接收的处理顺序刚好相反9如图二。MINA提供了时间驱动和异步操作的编程

17、模型。当前发行的MHM版本支持基于JAVANIO技术的TCPUDP应用程序开发、串口通讯程序,且MINA所支持的功能也在进一步的扩展中。因此,在JAVA应用程序中使用MHM框架可以不用考虑底层I0实现以及线程并发等复杂工作,使开发人员能够将更多的精力投入到业务逻辑和开发中,故被广泛采用10。2NIO和IO的区别和比较21回顾IO在介绍NIO之前,有必要了解传统的I/O操作的方式。以网络应用为例,传统方式需要监听一个SERVERSOCKET,接受请求的连接为其提供服务(服务通常包括了处理请求并发送响应)图一是服务器的生命周期图,其中标有粗黑线条的部分表明会发生I/O阻塞。图三河南师范大学本科毕业

18、设计8可以分析创建服务器的每个具体步骤。(1)首先创建SERVERSOCKETSERVERSOCKETSERVERNEWSERVERSOCKET(10000);(2)然后接受新的连接请求SOCKETNEWCONNECTIONSERVERACCEPT();对于ACCEPT方法的调用将造成阻塞,直到SERVERSOCKET接受到一个连接请求为止。一旦连接请求被接受,服务器可以读客户SOCKET中的请求。INPUTSTREAMINNEWCONNECTIONGETINPUTSTREAMINPUTSTREAMREADERREADERNEWINPUTSTREAMREADERINBUFFEREDREADER

19、BUFFERNEWBUFFEREDREADERREADERREQUESTREQUESTNEWREQUESTWHILEREQUESTISCOMPLETESTRINGLINEBUFFERREADLINEREQUESTADDLINELINE这样的操作有两个问题,首先BUFFEREDREADER类的READLINE()方法在其缓冲区未满时会造成线程阻塞,只有一定数据填满了缓冲区或者客户关闭了套接字,方法才会返回。其次,它回产生大量的垃圾,BUFFEREDREADER创建了缓冲区来从客户套接字读入数据,但是同样创建了一些字符串存储这些数据。虽然BUFFEREDREADER内部提供了STRINGBUFFE

20、R处理这一问题,但是所有的STRING很快变成了垃圾需要回收。同样的问题在发送响应代码中也存在RESPONSERESPONSEREQUESTGENERATERESPONSEOUTPUTSTREAMOUTNEWCONNECTIONGETOUTPUTSTREAMINPUTSTREAMINRESPONSEGETINPUTSTREAM;INTCH;WHILE1CHINREADOUTWRITECHNEWCONNECTIONCLOSE类似的,读写操作被阻塞而且向流中一次写入一个字符会造成效率低下,所以应该使河南师范大学本科毕业设计9用缓冲区,但是一旦使用缓冲,流又会产生更多的垃圾。传统的解决方法通常在JA

21、VA中处理阻塞I/O要用到线程(大量的线程THREAD)。一般是实现一个线程池用来处理请求,如图四图四线程使得服务器可以处理多个连接,但是它们也同样引发了许多问题。每个线程拥有自己的栈空间并且占用一些CPU时间,耗费很大,而且很多时间是浪费在阻塞的I/O操作上,没有有效的利用CPU。22NIO的介绍和新I/O221介绍NIOJAVA具有安全性、简易性、健壮性以及平台无关性等特点,但用JAVA平台编写的SOCKET系统,在多客户端服务器模式下,易受到大置线程开销的影响,这样既导致了性能问题又缺乏可伸缩性。为解决这个问题,JAVA平台的制订者引入了非阻塞I/O机制11。NIO的非阻塞I/O机制的核

22、心思想是多路复用,即将事物多路分离并分派到各自相应的事件处理程序中去它主要是围绕选择器和通道构建的12。由于NIO的非阻塞I/O机制有效地解决了多线程服务器存在的线程开销问题,同时又避免了轮询问题在性能上优于传统的阻塞式通讯,因此被广泛的大型的河南师范大学本科毕业设计10JAVA应用程序所采用。NIO包(JAVANIO)引入了四个关键的抽象数据类型,它们共同解决传统的I/O类中的一些问题。BUFFER它是包含数据且用于读写的线形表结构。其中还提供了一个特殊类用于内存映射文件的I/O操作。CHARSET它提供UNICODE字符串影射到字节序列以及逆影射的操作。CHANNELS包含SOCKET,F

23、ILE和PIPE三种管道,它实际上是双向交流的通道。SELECTOR它将多元异步I/O操作集中到一个或多个线程中(它可以被看成是UNIX中SELECT()函数或WIN32中WAITFORSINGLEEVENT()函数的面向对象版本)。222新I/O1)BUFFER传统的I/O不断的浪费对象资源(通常是STRING)。新I/O通过使用BUFFER读写数据避免了资源浪费。BUFFER对象是线性的,有序的数据集合,它根据其类别只包含唯一的数据类型。JAVANIOBUFFER类描述JAVANIOBYTEBUFFER包含字节类型。可以从READABLEBYTECHANNEL中读在WRITABLEBYTE

24、CHANNEL中写JAVANIOMAPPEDBYTEBUFFER包含字节类型,直接在内存某一区域映射JAVANIOCHARBUFFER包含字符类型,不能写入通道JAVANIODOUBLEBUFFER包含DOUBLE类型,不能写入通道JAVANIOFLOATBUFFER包含FLOAT类型JAVANIOINTBUFFER包含INT类型JAVANIOLONGBUFFER包含LONG类型JAVANIOSHORTBUFFER包含SHORT类型可以通过调用ALLOCATEINTCAPACITY方法或者ALLOCATEDIRECTINTCAPACITY方法分配一个BUFFER。特别的,你可以创建MAPPED

25、BYTESBUFFER通过调用FILECHANNELMAPINTMODE,LONGPOSITION,INTSIZE。直接(DIRECT)BUFFER在内存中分配一段连续的块并使用本地访问方法读写数据。非直接NONDIRECTBUFFER通过使用JAVA中的数组访问代码读写数据。有时候必须使用非直接缓冲例如使用任何的WRAP方法(如BYTEBUFFERWRAPBYTE)在JAVA数组基础上创建BUFFER。2)字符编码河南师范大学本科毕业设计11向BYTEBUFFER中存放数据涉及到两个问题字节的顺序和字符转换。BYTEBUFFER内部通过BYTEORDER类处理了字节顺序问题,但是并没有处理字

26、符转换。事实上,BYTEBUFFER没有提供方法读写STRING。JAVANIOCHARSETCHARSET处理了字符转换问题。它通过构造CHARSETENCODER和CHARSETDECODER将字符序列转换成字节和逆转换。3程序设计与编码31开发平台与工具311J2EE平台J2EE,即是JAVA2平台企业版(JAVA2PLATFORMENTERPRISEEDITION),是原SUN公司(现已被甲骨文公司收购)为企业级应用推出的标准平台13。它简化了企业解决方案的开发、部署和管理相关复杂问题的体系结构,J2EE技术的基础就是核心JAVA平台或JAVA2平台的标准版,其最终目的就是成为一个能够

27、使企业开发者大幅缩短投放市场时间的体系结构。J2EE体系结构提供中间层集成框架用来满足无需太多费用而又需要高可用性、高可靠性以及可扩展性的应用的需求。通过提供统一的开发平台,J2EE降低了开发多层应用的费用和复杂性,同时提供对现有应用程序集成强有力支持,完全支持ENTERPRISEJAVABEANS,有良好的向导支持打包和部署应用,添加目录支持,增强了安全机制,提高了性能。312集成环境MYECLIPSE14,是一个十分优秀的用于开发JAVA,J2EE的ECLIPSE插件集合,MYECLIPSE的功能非常强大,支持也十分广泛,尤其是对各种开源产品的支持十分不错。MYECLIPSE企业级工作平台

28、(MYECLIPSEENTERPRISEWORKBENCH,简称MYECLIPSE)是对ECLIPSEIDE的扩展,利用它我们可以在数据库和JAVAEE的开发、发布以及应用程序服务器的整合方面极大的提高工作效率。它是功能丰富的JAVAEE集成开发环境,包括了完备的编码、调试、测试和发布功能,完整支持HTML,STRUTS,JSP,CSS,JAVASCRIPT,SPRING,SQL,HIBERNATE。32具体代码实现步骤321下载使用的JAR包(1)登录HTTP/MINAAPACHEORG/MINAPROJECT/DOWNLOADSHTML下载MINA207ZIP,解压获得MINACORE20

29、0M1JAR(2)登录HTTP/WWWSLF4JORG/DOWNLOADHTML下载SLF4J175ZIP,解压获得河南师范大学本科毕业设计12SLF4JAPI175JAR与SLF4JLOG4J12175JAR(3)添加LOG4J的JAR包,注意如果使用SLF4JLOG4J12XXXJAR,就需要添加LOG4J12X。我这里使用的是LOG4J1214JAR(LOGGER配置详情参见HTTP/MINAAPACHEORG/FIRSTSTEPSHTML)322工程创建配置创建一个JAVAPROJECT(默认使用UTF8编码格式),添加LOG4JPROPERTIESLOG4JROOTLOGGERDEB

30、UG,MINA,FILELOG4JAPPENDERMINAORGAPACHELOG4JCONSOLEAPPENDERLOG4JAPPENDERMINALAYOUTORGAPACHELOG4JPATTERNLAYOUTLOG4JAPPENDERMINALAYOUTCONVERSIONPATTERNDYYYYMMDDHHMMSS,SSS5PC1XMNLOG4JAPPENDERFILEORGAPACHELOG4JROLLINGFILEAPPENDERLOG4JAPPENDERFILEFILE/LOG/MINADEMOSLOGLOG4JAPPENDERFILEMAXFILESIZE5120KBLOG4

31、JAPPENDERFILEMAXBACKUPINDEX10LOG4JAPPENDERFILELAYOUTORGAPACHELOG4JPATTERNLAYOUTLOG4JAPPENDERFILELAYOUTCONVERSIONPATTERNVAMSDP|M|TCMLN323服务端程序创建服务端程序服务端绑定8889端口PUBLICCLASSMINASERVERPRIVATESTATICLOGGERLOGGERLOGGERGETLOGGERMINASERVERCLASSPRIVATESTATICINTPORT8889PUBLICSTATICVOIDMAINSTRINGARGSIOACCEPTORA

32、CCEPTORNULL河南师范大学本科毕业设计13TRY/创建一个非阻塞的SERVER端的SOCKETACCEPTORNEWNIOSOCKETACCEPTOR/设置过滤器(使用MINA提供的文本换行符编解码器)ACCEPTORGETFILTERCHAINADDLAST“CODEC“,NEWPROTOCOLCODECFILTERNEWTEXTLINECODECFACTORYCHARSETFORNAME“UTF8“,LINEDELIMITERWINDOWSGETVALUE,LINEDELIMITERWINDOWSGETVALUE/设置读取数据的缓冲区大小ACCEPTORGETSESSIONCONF

33、IGSETREADBUFFERSIZE2048/读写通道10秒内无操作进入空闲状态ACCEPTORGETSESSIONCONFIGSETIDLETIMEIDLESTATUSBOTH_IDLE,10/绑定逻辑处理器ACCEPTORSETHANDLERNEWDEMO1SERVERHANDLER/绑定端口ACCEPTORBINDNEWINETSOCKETADDRESSPORTLOGGERINFO“服务端启动成功端口号为“PORTCATCHEXCEPTIONELOGGERERROR“服务端启动异常“,EEPRINTSTACKTRACE创建服务端最主要的就是绑定服务端的消息编码解码过滤器和业务逻辑处理器

34、;(1)业务逻辑处理器是MINASERVERHANDLER看它的具体实现PUBLICCLASSMINASERVERHANDLEREXTENDSIOHANDLERADAPTERPUBLICSTATICLOGGERLOGGERLOGGERGETLOGGERDEMO1SERVERHANDLERCLASS河南师范大学本科毕业设计14OVERRIDEPUBLICVOIDSESSIONCREATEDIOSESSIONSESSIONTHROWSEXCEPTIONLOGGERINFO“服务端与客户端创建连接“OVERRIDEPUBLICVOIDSESSIONOPENEDIOSESSIONSESSIONTHRO

35、WSEXCEPTIONLOGGERINFO“服务端与客户端连接打开“OVERRIDEPUBLICVOIDMESSAGERECEIVEDIOSESSIONSESSION,OBJECTMESSAGETHROWSEXCEPTIONSTRINGMSGMESSAGETOSTRINGLOGGERINFO“服务端接收到的数据为“MSGIF“BYE“EQUALSMSG/服务端断开连接的条件SESSIONCLOSEDATEDATENEWDATESESSIONWRITEDATEOVERRIDEPUBLICVOIDMESSAGESENTIOSESSIONSESSION,OBJECTMESSAGETHROWSEXCE

36、PTIONLOGGERINFO“服务端发送信息成功“OVERRIDEPUBLICVOIDSESSIONCLOSEDIOSESSIONSESSIONTHROWSEXCEPTION河南师范大学本科毕业设计15OVERRIDEPUBLICVOIDSESSIONIDLEIOSESSIONSESSION,IDLESTATUSSTATUSTHROWSEXCEPTIONLOGGERINFO“服务端进入空闲状态“OVERRIDEPUBLICVOIDEXCEPTIONCAUGHTIOSESSIONSESSION,THROWABLECAUSETHROWSEXCEPTIONLOGGERERROR“服务端发送异常“,

37、CAUSE(2)使用命令行的TELNET来测试下服务端程序启动服务端程序;WINDOWS下开始菜单,运行,输入CMD,回车;输入TELNET1270013005回车河南师范大学本科毕业设计16连接成功后,服务端程序的后台会打印如下信息这个就是业务逻辑逻辑处理器打印的TELNET中随便输入一个字符串,回车;则可以看到返回的日期;输入BYE,回车,提示服务端断开连接如果需要重新测试,则需要再次重复C的步骤;324客户端程序MINA能做服务端程序,自然也可以做客户端程度啦。最重要的是,客户端程序和服务端程序写法基本一致,很简单的。客户端代码PUBLICCLASSMINACLIENT01PRIVATE

38、STATICLOGGERLOGGERLOGGERGETLOGGERMINACLIENT01CLASSPRIVATESTATICSTRINGHOST“127001“PRIVATESTATICINTPORT3005PUBLICSTATICVOIDMAINSTRINGARGS河南师范大学本科毕业设计17/创建一个非阻塞的客户端程序IOCONNECTORCONNECTORNEWNIOSOCKETCONNECTOR/设置链接超时时间CONNECTORSETCONNECTTIMEOUT30000/添加过滤器CONNECTORGETFILTERCHAINADDLAST“CODEC“,NEWPROTOCOLC

39、ODECFILTERNEWTEXTLINECODECFACTORYCHARSETFORNAME“UTF8“,LINEDELIMITERWINDOWSGETVALUE,LINEDELIMITERWINDOWSGETVALUE/添加业务逻辑处理器类CONNECTORSETHANDLERNEWDEMO1CLIENTHANDLERIOSESSIONSESSIONNULLTRYCONNECTFUTUREFUTURECONNECTORCONNECTNEWINETSOCKETADDRESSHOST,PORT/创建连接FUTUREAWAITUNINTERRUPTIBLY/等待连接创建完成SESSIONFUTU

40、REGETSESSION/获得SESSIONSESSIONWRITE“MINASCOMING“/发送消息CATCHEXCEPTIONELOGGERERROR“客户端链接异常“,ESESSIONGETCLOSEFUTUREAWAITUNINTERRUPTIBLY/等待连接断开CONNECTORDISPOSE和服务端代码极其相似,不同的是服务端是创建NIOSOCKETACCEPTOR对象,而客户端是创建NIOSOCKETCONNECTOR对象;同样需要添加编码解码过滤器和业务逻辑过滤器;(1)业务逻辑过滤器代码河南师范大学本科毕业设计18PUBLICCLASSCLIENTHANDLEREXTEND

41、SIOHANDLERADAPTERPRIVATESTATICLOGGERLOGGERLOGGERGETLOGGERDEMO1CLIENTHANDLERCLASSOVERRIDEPUBLICVOIDMESSAGERECEIVEDIOSESSIONSESSION,OBJECTMESSAGETHROWSEXCEPTIONSTRINGMSGMESSAGETOSTRINGLOGGERINFO“客户端接收到的信息为“MSGOVERRIDEPUBLICVOIDEXCEPTIONCAUGHTIOSESSIONSESSION,THROWABLECAUSETHROWSEXCEPTIONLOGGERERROR“客户

42、端发生异常“,CAUSE(2)测试服务端与客户端程序启动服务端,然后再启动客户端(客户端发送的消息是“MINASCOMING”)服务端接收消息并处理成功;客户端接收响应结果河南师范大学本科毕业设计194系统说明书41开发环境及工具本系统所用的工具服务器端(WINDOWS平台)首先应有JAVA环境JDK,建议采用JDK150_07;MYECLIPSE85。客户端FLASH客户端本系统运行所需用到的环境为硬件配置中央处理器(CPU)P420G以上的处理器;硬盘40GB以上硬盘;内存256以上的DDR内存;显卡128M以上显存显卡软件配置WINDOWS7版本、MYECLIPSE85、J2SDK142

43、等。42本聊天室包括服务器和客户端两个部分服务器具有管理日志,监视聊天室的聊天内容,发送系统消息,和消息中转等功能。客户端具有登录,注册用户,多种方式的聊天,发送文本文件和播放音乐等功能。43具体的使用说明如下(1)服务器端运行服务器程序(2)客户端进入登陆界面,第一次登陆需要注册,点注册按扭。按要求填完注册信息。返回登陆窗口,输入用户名、密码,进行登陆。进入聊天室。进入聊天室后,就可以尽情的聊天了,可以和你喜欢的人私聊了,聊的开心话题还可以进行保存,当然,你也可以清屏。河南师范大学本科毕业设计20参考文献1杨铁军,黄琳MINA网络框架和RMI的对比研究J计算机应用与软件2010,091922

44、2陈华恩JAVA非阻塞通信技术原理研究与实现J科技创新导报,2010,925263刘宁,邱爽基于JAVA的SOCKET通讯的实现J才智2009,1612144马喜春,张曾科基于SOCKET进行通用的网络通信程序设计J实验技术与管理,2005,332335谢希仁计算机网络(第五版)M北京电子工业出版社,2009,31326SRGIOFREIRE,ANDRZQUETEATCPLAYERNAMESERVICEFORTCPPORTSRATC08USENIX2008ANNUALTECHNICALCONFERENCEONANNUALTECHNICALCONFERENCE,20087金玉军,姜晓彤,况迎辉基

45、于高性能NIO的MINA框架的应用J中国科技信息,2009,1693948曾冠东基于JAVA构建简单高性能的NIO应用J程序员,2008,255579刘建亮,宋莉MINA框架研究与实现J电脑编程技巧与维护2010,0711311610邓轶婷基于MINA框架的JAVA通讯层应用J中国科技博览2012,3825625911王洁JAVANIO在SOCKET通讯中的应用J成都信息工程学院学报,2003。18325826112张华,德基基于JAVANIO的通信技术研究滩坊学院学报,200884444813郑阿奇,俞琰J2EE应用实践教程M北京电子工业出版社,2010,1614KRILLPAUL,GENU

46、ITECINTRODUCESMYECLIPSEIDEFORTHESPRINGFRAMEWORKJINFOWORLDCOM2012,6342347河南师范大学本科毕业设计21致谢在此论文撰写过程中,要特别感谢我的导师李功丽的指导与督促,同时感谢她的谅解与包容。没有李老师的帮助也就没有今天的这篇论文。求学历程是艰苦的,但又是快乐的。感谢我的辅导员李海燕老师,谢谢她在这四年中为我们全班所做的一切,她不求回报,无私奉献的精神很让我感动,再次向她表示由衷的感谢。在这四年的学期中结识的各位生活和学习上的挚友让我得到了人生最大的一笔财富。在此,也对他们表示衷心感谢。谢谢我的父母,没有他们辛勤的付出也就没有我

47、的今天,在这一刻,将最崇高的敬意献给你们本文参考了大量的文献资料,在此,向各学术界的前辈们致敬钱永福2012年05月于河南师范大学致谢要写好一篇论文需要借助很多东西,也需要很多人的帮助和关心。因此,写完这篇文章我要感谢的对象也有很多。首先,我要感谢我的指导老师李老师。她不仅耐心的帮我确定论文题目,还放下作为教师该有的神圣尊严,以朋友的身份告诉我该如何完成这篇论文。她告诉我如何抓住一个具体方面来写论文;她告诉我如何快速有效的搜集资料;她告诉我如何快捷地找到相关论文;她告诉我哪个学校的网站有本专业的硕士、博士论文;她指导我如何利用手头上的论文取舍嫁接整合。本论文的完成,离不开她的悉心指导和孜孜不倦

48、地教诲。其次,我要感谢那些与我朝夕相处了四年的大学同学。在写毕业论文的这些日子里,是他们和我一起努力,共同进退,相互鼓励相互扶持,互相帮助,互通有无,及时沟通,以免出现论文撞车事件。使得我们都可以及时完成自己的毕业论文,都可以顺利毕业致谢四年的读书生活在这个季节即将划上一个句号,而于我的人生却只是一个逗号,我将面对又一次征程的开始。四年的求学生涯在师长、亲友的大力支持下,走得辛苦却也收获河南师范大学本科毕业设计22满囊,在论文即将付梓之际,思绪万千,心情久久不能平静。伟人、名人为我所崇拜,可是我更急切地要把我的敬意和赞美献给一位平凡的人,我的导师。我不是您最出色的学生,而您却是我最尊敬的老师。

49、您治学严谨,学识渊博,思想深邃,视野雄阔,为我营造了一种良好的精神氛围。授人以鱼不如授人以渔,置身其间,耳濡目染,潜移默化,使我不仅接受了全新的思想观念,树立了宏伟的学术目标,领会了基本的思考方式,从论文题目的选定到论文写作的指导,经由您悉心的点拨,再经思考后的领悟,常常让我有“山重水复疑无路,柳暗花明又一村”。感谢我的爸爸妈妈,焉得谖草,言树之背,养育之恩,无以回报,你们永远健康快乐是我最大的心愿。在论文即将完成之际,我的心情无法平静,从开始进入课题到论文的顺利完成,有多少可敬的师长、同学、朋友给了我无言的帮助,在这里请接受我诚挚谢意同时也感谢学院为我提供良好的做毕业设计的环境。最后再一次感谢所有在毕业设计中曾经帮助过我的良师益友和同学,以及在设计中被我引用或参考的论著的作者。随着这篇本科毕业论文的最后落笔,我四年的大学生活也即将划上一个圆满的句号。回忆这四年生活的点点滴滴,从入学时对大学生活的无限憧憬到课堂上对各位老师学术学识的深沉沉湎,从奔波于教室图书馆的来去匆匆到业余生活的五彩缤纷,一切中的一切都是历历在目,让人倍感留恋,倍感珍惜。四年河南师范大学的学习生活注定将成为我人生中的一段重要旅

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文资料库 > 毕业论文

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。