河南师范大学计算机科学与技术专业本科毕业论文

上传人:仙*** 文档编号:28718095 上传时间:2021-09-08 格式:DOC 页数:23 大小:289.50KB
收藏 版权申诉 举报 下载
河南师范大学计算机科学与技术专业本科毕业论文_第1页
第1页 / 共23页
河南师范大学计算机科学与技术专业本科毕业论文_第2页
第2页 / 共23页
河南师范大学计算机科学与技术专业本科毕业论文_第3页
第3页 / 共23页
资源描述:

《河南师范大学计算机科学与技术专业本科毕业论文》由会员分享,可在线阅读,更多相关《河南师范大学计算机科学与技术专业本科毕业论文(23页珍藏版)》请在装配图网上搜索。

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

2、是JAVA NIO 作为底层支持)操作的编程模型。随着网络通信的不断增加,用户对于服务器通讯层的要求也越来越高。如何提高服务器端程序的性能,如何使用一种高效的I/O底层,从而更容易地开发出高性能的网络应用程序,成为近年来通讯层研究的主要课题。通过对比,基于Mhm(Minimum hardware modificatio)框架的通讯层具有实现简单,性能高效的特点,是Java通讯层应用的推荐框架.关键词 Mina;Java; Mhm;IO;NIO;Socket;ServerSocket; TCP/IP; IoAcceptor ;IoConnector; BufferedReader;Buffer;

3、Charset;Channels;Selector;J2EE;MyEclipse;Enterprise ;JavaBeans; MinaServeBased on the the Mina Framework of Java Communication Layer ApplicationsAbstract Apache Mina Server is a network communication application framework, it is primarily a communication framework based on TCP / IP, UDP / IP protoco

4、l stack (of course, also can provide Java object serialization, the virtual machine pipe communication services), Mina canhelp us to quickly develop high-performance, highly scalable network communications applications, Mina provides event-driven, asynchronous (asynchronous IO Minas default is to us

5、e programming model the Java NIO as the underlying support) operation. With the continuous increase in network traffic, users are increasingly high requirements for the server communication layer. Therefore, how to improve the performance of the server-side program, how to use a highly efficient I /

6、 O low-level, making it easier to develop a high-performance network applications become the main topic of the communication layer in recent years. Mhm (Minimum hardware modification ) framework-based communication layer has a simple, efficient performance, by contrast, is the the Java communication

7、 layer applications recommended framework.Keywords Mina;Java; Mhm;IO;NIO;Socket;ServerSocket; TCP/IP; IoAcceptor ;IoConnector; BufferedReader;Buffer;Charset;Channels;Selector;J2EE;MyEclipse;Enterprise ;JavaBeans; MinaServe。目 录前 言31运用socket实现通信的方式与关键技术31.1 通过JAVA的Socket阻塞方式实现通信3 1.1.1 阻塞通信的服务器端41.1.2

8、 阻塞通信的客户端41.2 通过JAVA的Socket非阻塞方式实现通信41.3 TCP/IP协议41.3.1 Tcp、Ip协议的特点41.3.2 Tcp/Ip数据的传输过程41.3.3 端口号51.4 MINA 架构剖析52.nio和io的区别和比较62.1回顾IO62.2 NIO的介绍和新I/O92.2.1介绍NIO92.2.2 新I/O93.程序设计与编码103.1开发平台与工具103.1.1 J2EE平台10 3.1.2 集成环境113.2具体代码实现步骤113.2.1下载使用的Jar包113.2.2工程创建配置113.2.3.服务端程序123.2.4.客户端程序164.系统说明书18

9、4.1开发环境及工具184.2本聊天室包括服务器和客户端两个部分:194.3具体的使用说明如下:19参考文献20致 谢21前 言 自进入21世纪以来,网络发展异常迅速,电脑走进了普通人的家中,成了我们生活中不可缺少的一部分,随着用户的激增,网络通信的不断增加,用户对于服务器通讯层的要求也越来越高,给现在的服务器端的正常运行带来了很大的压力。因此,如何提高服务器端程序的性能,如何使用一种高效的I/O底层,从而更容易地开发出高性能的网络通信程序,成为近年来通讯层研究的主要课题。本论文通过JAVA的Socket非阻塞方式实现了一个局域网的通信。目前Java构建的网络应用程序框架有多种,较为流行的框架

10、有Grizzly、Netty、QuickServer、xSocket、Mina等,通过对比,基于Mina框架的通讯层具有实现简单,性能高效的特点1,是Java通讯层应用的推荐框架。1运用socket实现通信的方式与关键技术1.1 通过JAVA的Socket非阻塞方式实现通信2 非阻塞式通讯是指可以将通信操作交给特定的通信硬件去完成,而无需等到其完全完成便可以返回。在该通信硬件进行通信操作时,处理机可以同步进行计算操作,实现了计算与通信的重叠,从而提高整个程序的执行效率。但缺点是不易实现。1.2 通过JAVA的Socket阻塞方式实现通信 阻塞式通讯是指在每建立一个Socket连接的同时,创建一

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

12、。客户端不需要指定打开的端口,通常临时的、动态的分配一个1024以上的端口。1.3 TCP/IP协议1.3.1 Tcp、Ip协议的特点 TCP/IP(Transmission Control Protocol/Internet Protocol)协议不是TCP和IP这两个协议的合称,而是指因特网整个TCP/IP协议族。从协议分层模型方面来讲,TCP/IP由四个层次组成:网络接口层、网络层、传输层、应用层5。 图一: TCP/IP四层协议的表示方法举例IP协议的作用:第一,它是网络层的协议,提供互联网上数据传输的统一格式。第二,提供不可靠的无连接的服务。第三,定义了互联网上的传输数据的基本单元,

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

14、CP层。TCP接收到分组后,检查数据包的正确性,如果不正确,通知源计算机重新送该IP包。利用分组的序号来将数据按照原来的顺序排列,然后送给应用层。1.3.3 端口号 逻辑意义上的端口,一般是指TCP/IP协议中的端口6,端口号的范围从0到65535,比如用于浏览网页服务的80端口,用于FTP服务的21端口等等。 服务器一般都是通过知名端口号来识别的。例如,对于每个TCP/IP实现来说,FTP服务器的TCP端口号都是21,每个Telnet服务器的TCP端口号都是23,每个TFTP(简单文件传送协议)服务器的UDP端口号都是69。任何TCP/IP实现所提供的服务都用知名的11023之间的端口号。这

15、些知名端口号由Internet号分配机构(Internet Assigned Numbers Authority,IANA)来管理。 1.4 MINA 架构剖析 MINA (Multipurpose Infrastructure for Network Applications)是Apache 软件组织开发的一种作为基于NIO的一个多功能网络应用程序框架,使用Java 技术实现,可以帮助用户快速构建稳定、高性能的网络应用程序。该框架的主要特点有:基于Java NIO设计。巧妙地采用松耦合架构;可灵活地加载过滤器机制;单元测试更容易实现;可自定义线程的数量,以提高运行于多处理器上的性能 采用回调

16、的方式完成调用线程的使用更容易7。通过Java 异步输入输出(NIO)8技术,可以方便的支持TCP/UDP 协议;灵活、可配置的线程模型,这对于网络通信程序来说尤其重要, 用户可以根据实际需要选择符合自身的线程模型;多编码方式支持,既可以使用字节流或者文本,也可以使用其它编码方式,如ASN.1 编码等。MINA 框架的系统结构如图二 所示。图二:MINA系统机构示意图MINA 框架主要由I/O 服务管理(IoService)、I/O 过滤器链(IoFilterChain)、I/O 处理器(IoHandler)和I/O 会话管理(IoSession)等模块组成。IoService 负责与远端客户

17、进行通信底层操作,远端发送的数据首先由IoService 接收并转化为系统内部可识别的事件, 它的两个实现类IoAcceptor 和IoConnector 分别对应服务器端和客户端的I/O 服务管理类; 然后,IoFilterChain 接收由IoService 转化的事件,并使用链中包含的过滤器(IoFilter)进行处理,如日志记录、编码/解码、压缩和黑名单过滤等;最后,IoHandler负责处理由过滤器链处理后的事件, 业务逻辑大多在本模块中实现。处理完后,由IoSession 负责与远端客户进行交互,即使用IoSession 向远端发送的消息,该消息的发送顺序与接收的处理顺序刚好相反9

18、(如图二)。Mina提供了时间驱动和异步操作的编程模型。当前发行的Mhm版本支持基于Java NIO技术的TCPUDP应用程序开发、串口通讯程序,且Mina所支持的功能也在进一步的扩展中。因此,在Java应用程序中使用Mhm框架可以不用考虑底层I0实现以及线程并发等复杂工作,使开发人员能够将更多的精力投入到业务逻辑和开发中,故被广泛采用10。2.nio和io的区别和比较2.1回顾IO在介绍NIO之前,有必要了解传统的I/O操作的方式。以网络应用为例,传统方式需要监听一个ServerSocket,接受请求的连接为其提供服务(服务通常包括了处理请求并发送响应)图一是服务器的生命周期图,其中标有粗黑

19、线条的部分表明会发生I/O阻塞。图三可以分析创建服务器的每个具体步骤。(1)首先创建ServerSocketServerSocket server=new ServerSocket(10000);(2)然后接受新的连接请求 Socket newConnection=server.accept(); 对于accept方法的调用将造成阻塞,直到ServerSocket接受到一个连接请求为止。一旦连接请求被接受,服务器可以读客户socket中的请求。InputStream in = newConnection.getInputStream();InputStreamReader reader = n

20、ew InputStreamReader(in);BufferedReader buffer = new BufferedReader(reader);Request request = new Request();while(!request.isComplete() String line = buffer.readLine();request.addLine(line); 这样的操作有两个问题,首先BufferedReader类的readLine()方法在其缓冲区未满时会造成线程阻塞,只有一定数据填满了缓冲区或者客户关闭了套接字,方法才会返回。其次,它回产生大量的垃圾,BufferedR

21、eader创建了缓冲区来从客户套接字读入数据,但是同样创建了一些字符串存储这些数据。虽然BufferedReader内部提供了StringBuffer处理这一问题,但是所有的String很快变成了垃圾需要回收。同样的问题在发送响应代码中也存在:Response response = request.generateResponse();OutputStream out = newConnection.getOutputStream();InputStream in = response.getInputStream();int ch;while(-1 != (ch = in.read() ou

22、t.write(ch);newConnection.close(); 类似的,读写操作被阻塞而且向流中一次写入一个字符会造成效率低下,所以应该使用缓冲区,但是一旦使用缓冲,流又会产生更多的垃圾。传统的解决方法通常在Java中处理阻塞I/O要用到线程(大量的线程(Thread))。一般是实现一个线程池用来处理请求,如图四:图四 线程使得服务器可以处理多个连接,但是它们也同样引发了许多问题。每个线程拥有自己的栈空间并且占用一些CPU时间,耗费很大,而且很多时间是浪费在阻塞的I/O操作上,没有有效的利用CPU。2.2 NIO的介绍和新I/O2.2.1介绍NIO Java具有安全性、简易性、健壮性以及

23、平台无关性等特点,但用Java平台编写的Socket系统,在多客户端服务器模式下,易受到大置线程开销的影响,这样既导致了性能问题又缺乏可伸缩性。为解决这个问题,Java平台的制订者引入了非阻塞I/O机制11。 NIO的非阻塞I/O机制的核心思想是多路复用,即将事物多路分离并分派到各自相应的事件处理程序中去它主要是围绕选择器和通道构建的12。由于NIO的非阻塞I/O机制有效地解决了多线程服务器存在的线程开销问题,同时又避免了轮询问题在性能上优于传统的阻塞式通讯,因此被广泛的大型的Java应用程序所采用。NIO包(java.nio.*)引入了四个关键的抽象数据类型,它们共同解决传统的I/O类中的一

24、些问题。Buffer:它是包含数据且用于读写的线形表结构。其中还提供了一个特殊类用于内存映射文件的I/O操作。Charset:它提供Unicode字符串影射到字节序列以及逆影射的操作。Channels:包含socket,file和pipe三种管道,它实际上是双向交流的通道。Selector:它将多元异步I/O操作集中到一个或多个线程中(它可以被看成是Unix中select()函数或Win32中WaitForSingleEvent()函数的面向对象版本)。2.2.2 新I/O1)Buffer 传统的I/O不断的浪费对象资源(通常是String)。新I/O通过使用Buffer读写数据避免了资源浪费

25、。Buffer对象是线性的,有序的数据集合,它根据其类别只包含唯一的数据类型。java.nio.Buffer 类描述 java.nio.ByteBuffer 包含字节类型。 可以从ReadableByteChannel中读在 WritableByteChannel中写 java.nio.MappedByteBuffer 包含字节类型,直接在内存某一区域映射 java.nio.CharBuffer 包含字符类型,不能写入通道 java.nio.DoubleBuffer 包含double类型,不能写入通道 java.nio.FloatBuffer 包含float类型 java.nio.IntBuf

26、fer 包含int类型 java.nio.LongBuffer 包含long类型 java.nio.ShortBuffer 包含short类型 可以通过调用allocate(int capacity)方法或者allocateDirect(int capacity)方法分配一个Buffer。特别的,你可以创建MappedBytesBuffer通过调用FileChannel.map(int mode,long position,int size)。直接(direct)buffer在内存中分配一段连续的块并使用本地访问方法读写数据。非直接(nondirect)buffer通过使用Java中的数组访问

27、代码读写数据。有时候必须使用非直接缓冲例如使用任何的wrap方法(如ByteBuffer.wrap(byte))在Java数组基础上创建buffer。 2)字符编码 向ByteBuffer中存放数据涉及到两个问题:字节的顺序和字符转换。ByteBuffer内部通过ByteOrder类处理了字节顺序问题,但是并没有处理字符转换。事实上,ByteBuffer没有提供方法读写String。 Java.nio.charset.Charset处理了字符转换问题。它通过构造CharsetEncoder和CharsetDecoder将字符序列转换成字节和逆转换。3.程序设计与编码3.1开发平台与工具3.1.

28、1 J2EE平台 J2EE ,即是Java2平台企业版(Java 2 Platform Enterprise Edition),是原Sun公司(现已被甲骨文公司收购)为企业级应用推出的标准平台13。它简化了企业解决方案的开发、部署和管理相关复杂问题的体系结构,J2EE技术的基础就是核心Java平台或Java 2平台的标准版,其最终目的就是成为一个能够使企业开发者大幅缩短投放市场时间的体系结构。J2EE体系结构提供中间层集成框架用来满足无需太多费用而又需要高可用性、高可靠性以及可扩展性的应用的需求。通过提供统一的开发平台,J2EE降低了开发多层应用的费用和复杂性,同时提供对现有应用程序集成强有力

29、支持,完全支持Enterprise JavaBeans,有良好的向导支持打包和部署应用,添加目录支持,增强了安全机制,提高了性能。3.1.2 集成环境MyEclipse14,是一个十分优秀的用于开发Java, J2EE的Eclipse插件集合,MyEclipse的功能非常强大,支持也十分广泛,尤其是对各种开源产品的支持十分不错。 MyEclipse企业级工作平台(MyEclipse Enterprise Workbench ,简称MyEclipse)是对EclipseIDE的扩展,利用它我们可以在数据库和JavaEE的开发、发布以及应用程序服务器的整合方面极大的提高工作效率。它是功能丰富的Ja

30、vaEE集成开发环境,包括了完备的编码、调试、测试和发布功能,完整支持:HTML,Struts,JSP,CSS,Javascript,Spring,SQL,Hibernate。3.2具体代码实现步骤3.2.1下载使用的Jar包(1) 登录http:/mina.apache.org/mina-project/downloads.html 下载 mina2.0.7.zip,解压获得mina-core-2.0.0-M1.jar(2) 登录 http:/www.slf4j.org/download.html 下载slf4j1.7.5.zip,解压获得slf4j-api-1.7.5.jar 与 slf4

31、j-log4j12-1.7.5.jar(3) 添加Log4j的jar包,注意如果使用slf4j-log4j12-XXX.jar,就需要添加log4j1.2.X。我这里使用的是log4j-1.2.14.jar (Logger配置详情参见http:/mina.apache.org/first-steps.html )3.2.2工程创建配置创建一个Java Project(默认使用UTF-8编码格式),添加log4j.propertieslog4j.rootLogger=DEBUG,MINA,filelog4j.appender.MINA=org.apache.log4j.ConsoleAppend

32、er log4j.appender.MINA.layout=org.apache.log4j.PatternLayout log4j.appender.MINA.layout.ConversionPattern=%dyyyy-MM-dd HH:mm:ss,SSS %-5p %c1 %x - %m%nlog4j.appender.file=org.apache.log4j.RollingFileAppenderlog4j.appender.file.File=./log/minademos.loglog4j.appender.file.MaxFileSize=5120KBlog4j.append

33、er.file.MaxBackupIndex=10log4j.appender.file.layout=org.apache.log4j.PatternLayoutlog4j.appender.file.layout.ConversionPattern=VAMS%d %p | %m | %t %C.%M(%L)%n3.2.3.服务端程序创建服务端程序:(服务端绑定8889端口)public class MinaServer private static Logger logger = Logger.getLogger(MinaServer.class);private static int P

34、ORT = 8889;public static void main(String args) IoAcceptor acceptor = null;try / 创建一个非阻塞的server端的Socketacceptor = new NioSocketAcceptor();/ 设置过滤器(使用Mina提供的文本换行符编解码器)acceptor.getFilterChain().addLast(codec,new ProtocolCodecFilter(new TextLineCodecFactory(Charset.forName(UTF-8),LineDelimiter.WINDOWS.g

35、etValue(),LineDelimiter.WINDOWS.getValue();/ 设置读取数据的缓冲区大小acceptor.getSessionConfig().setReadBufferSize(2048);/ 读写通道10秒内无操作进入空闲状态acceptor.getSessionConfig().setIdleTime(IdleStatus.BOTH_IDLE, 10);/ 绑定逻辑处理器acceptor.setHandler(new Demo1ServerHandler();/ 绑定端口acceptor.bind(new InetSocketAddress(PORT);logg

36、er.info(服务端启动成功. 端口号为: + PORT); catch (Exception e) logger.error(服务端启动异常., e);e.printStackTrace();创建服务端最主要的就是绑定服务端的消息编码解码过滤器和业务逻辑处理器;(1)业务逻辑处理器是MinaServerHandler-看它的具体实现:public class MinaServerHandler extends IoHandlerAdapter public static Logger logger = Logger.getLogger(Demo1ServerHandler.class);O

37、verridepublic void sessionCreated(IoSession session) throws Exception logger.info(服务端与客户端创建连接.);Overridepublic void sessionOpened(IoSession session) throws Exception logger.info(服务端与客户端连接打开.);Overridepublic void messageReceived(IoSession session, Object message)throws Exception String msg = message.

38、toString();logger.info(服务端接收到的数据为: + msg);if (bye.equals(msg) / 服务端断开连接的条件session.close();Date date = new Date();session.write(date);Overridepublic void messageSent(IoSession session, Object message) throws Exception logger.info(服务端发送信息成功.);Overridepublic void sessionClosed(IoSession session) throws

39、 Exception Overridepublic void sessionIdle(IoSession session, IdleStatus status)throws Exception logger.info(服务端进入空闲状态.);Overridepublic void exceptionCaught(IoSession session, Throwable cause)throws Exception logger.error(服务端发送异常., cause); (2)使用命令行的telnet来测试下服务端程序启动服务端程序;Windows下开始菜单,运行,输入cmd,回车;输入:

40、telnet 127.0.0.1 3005 回车连接成功后,服务端程序的后台会打印如下信息:这个就是业务逻辑逻辑处理器打印的:telnet中随便输入一个字符串,回车;则可以看到返回的日期;输入bye,回车,提示服务端断开连接如果需要重新测试,则需要再次重复C的步骤;3.2.4.客户端程序Mina能做服务端程序,自然也可以做客户端程度啦。最重要的是,客户端程序和服务端程序写法基本一致,很简单的。客户端代码:public class MinaClient01 private static Logger logger = Logger.getLogger(MinaClient01.class);pr

41、ivate static String HOST = 127.0.0.1;private static int PORT = 3005;public static void main(String args) / 创建一个非阻塞的客户端程序IoConnector connector = new NioSocketConnector();/ 设置链接超时时间connector.setConnectTimeout(30000);/ 添加过滤器connector.getFilterChain().addLast(codec,new ProtocolCodecFilter(new TextLineCo

42、decFactory(Charset.forName(UTF-8), LineDelimiter.WINDOWS.getValue(),LineDelimiter.WINDOWS.getValue();/ 添加业务逻辑处理器类connector.setHandler(new Demo1ClientHandler();IoSession session = null;try ConnectFuture future = connector.connect(new InetSocketAddress(HOST, PORT);/ 创建连接future.awaitUninterruptibly();/

43、 等待连接创建完成session = future.getSession();/ 获得sessionsession.write(Minas coming.);/ 发送消息 catch (Exception e) logger.error(客户端链接异常., e);session.getCloseFuture().awaitUninterruptibly();/ 等待连接断开connector.dispose();和服务端代码极其相似,不同的是服务端是创建NioSocketAcceptor对象,而客户端是创建NioSocketConnector对象;同样需要添加编码解码过滤器和业务逻辑过滤器;(

44、1)业务逻辑过滤器代码:public class ClientHandler extends IoHandlerAdapter private static Logger logger = Logger.getLogger(Demo1ClientHandler.class);Overridepublic void messageReceived(IoSession session, Object message)throws Exception String msg = message.toString();logger.info(客户端接收到的信息为: + msg);Overridepubl

45、ic void exceptionCaught(IoSession session, Throwable cause)throws Exception logger.error(客户端发生异常., cause);(2)测试服务端与客户端程序启动服务端,然后再启动客户端(客户端发送的消息是“Minas coming.”)服务端接收消息并处理成功;客户端接收响应结果4.系统说明书4.1开发环境及工具本系统所用的工具:服务器端:(Windows平台)首先应有java环境jdk,建议采用jdk1.5.0_07;MyEclipse8.5。客户端: Flash客户端本系统运行所需用到的环境为:硬件配置 :

46、中央处理器(CPU) :P4 2.0G以上的处理器;硬 盘:40GB以上硬盘;内 存:256以上的DDR内存;显 卡:128M以上显存显卡软件配置:WINDOWS 7版本、MyEclipse8.5、j2sdk-1.42等。4.2本聊天室包括服务器和客户端两个部分:服务器具有管理日志,监视聊天室的聊天内容,发送系统消息,和消息中转等功能。客户端具有登录,注册用户,多种方式的聊天,发送文本文件和播放音乐等功能。4.3具体的使用说明如下:(1) 服务器端:运行服务器程序(2) 客户端:进入登陆界面,第一次登陆需要注册,点注册按扭。按要求填完注册信息。返回登陆窗口,输入用户名、密码,进行登陆。进入聊天

47、室。进入聊天室后,就可以尽情的聊天了,可以和你喜欢的人私聊了,聊的开心话题还可以进行保存,当然,你也可以清屏。参考文献1杨铁军,黄琳. MINA网络框架和RMI的对比研究J. 计算机应用与软件. 2010,09:19-222陈华恩.JAVA非阻塞通信技术原理研究与实现J科技创新导报,2010,9:25-263刘宁,邱爽.基于Java的socket通讯的实现J .才智.2009,16:12-144马喜春,张曾科.基于Socket进行通用的网络通信程序设计J实验技术与管理,2005,3:32-335谢希仁.计算机网络(第五版)M.北京:电子工业出版社,2009,31-326Srgio Freire

48、,Andr Zquete.A TCP-layer name service for TCP portsRATC08: USENIX 2008 Annual Technical Conference on Annual Technical Conference, 20087金玉军,姜晓彤,况迎辉基于高性能NIO的MINA框架的应用J中国科技信息,2009,16:93-948曾冠东.基于Java构建简单高性能的NIO应用J程序员,2008,2:55-579刘建亮,宋莉. Mina框架研究与实现J. 电脑编程技巧与维护. 2010,07:113-11610邓轶婷.基于Mina框架的Java通讯层应用

49、J.中国科技博览.2012,38:256-25911王洁JAVA NIO在Socket通讯中的应用J成都信息工程学院学报,2003。18(3):258-26112张华,德基基于Java NIO的通信技术研究滩坊学院学报,20088(4):44-4813郑阿奇,俞琰.J2EE应用实践教程M.北京:电子工业出版社,2010,1-614Krill Paul,Genuitec introduces MyEclipse IDE for the Spring FrameworkJInfoW2012, 6:342-347致 谢 在此论文撰写过程中,要特别感谢我的导师李功丽的指导与督促,同时感谢她的谅解与包容

50、。没有李老师的帮助也就没有今天的这篇论文。求学历程是艰苦的,但又是快乐的。感谢我的辅导员李海燕老师,谢谢她在这四年中为我们全班所做的一切,她不求回报,无私奉献的精神很让我感动,再次向她表示由衷的感谢。在这四年的学期中结识的各位生活和学习上的挚友让我得到了人生最大的一笔财富。在此,也对他们表示衷心感谢。谢谢我的父母,没有他们辛勤的付出也就没有我的今天,在这一刻,将最崇高的敬意献给你们!本文参考了大量的文献资料,在此,向各学术界的前辈们致敬! 钱永福 2012年05月于河南师范大学致 谢要写好一篇论文需要借助很多东西,也需要很多人的帮助和关心。因此,写完这篇文章我要感谢的对象也有很多。首先,我要感

51、谢我的指导老师李老师。她不仅耐心的帮我确定论文题目,还放下作为教师该有的神圣尊严,以朋友的身份告诉我该如何完成这篇论文。她告诉我如何抓住一个具体方面来写论文;她告诉我如何快速有效的搜集资料;她告诉我如何快捷地找到相关论文;她告诉我哪个学校的网站有本专业的硕士、博士论文;她指导我如何利用手头上的论文取舍嫁接整合。本论文的完成, 离不开她的悉心指导和孜孜不倦地教诲。其次,我要感谢那些与我朝夕相处了四年的大学同学。在写毕业论文的这些日子里,是他们和我一起努力,共同进退,相互鼓励相互扶持,互相帮助,互通有无,及时沟通,以免出现论文撞车事件。使得我们都可以及时完成自己的毕业论文,都可以顺利毕业!致 谢四

52、年的读书生活在这个季节即将划上一个句号,而于我的人生却只是一个逗号,我将面对又一次征程的开始。四年的求学生涯在师长、亲友的大力支持下,走得辛苦却也收获满囊,在论文即将付梓之际,思绪万千,心情久久不能平静。 伟人、名人为我所崇拜,可是我更急切地要把我的敬意和赞美献给一位平凡的人,我的导师。我不是您最出色的学生,而您却是我最尊敬的老师。您治学严谨,学识渊博,思想深邃,视野雄阔,为我营造了一种良好的精神氛围。授人以鱼不如授人以渔,置身其间,耳濡目染,潜移默化,使我不仅接受了全新的思想观念,树立了宏伟的学术目标,领会了基本的思考方式,从论文题目的选定到论文写作的指导,经由您悉心的点拨,再经思考后的领悟

53、,常常让我有“山重水复疑无路,柳暗花明又一村”。 感谢我的爸爸妈妈,焉得谖草,言树之背,养育之恩,无以回报,你们永远健康快乐是我最大的心愿。在论文即将完成之际,我的心情无法平静,从开始进入课题到论文的顺利完成,有多少可敬的师长、同学、朋友给了我无言的帮助,在这里请接受我诚挚谢意! 同时也感谢学院为我提供良好的做毕业设计的环境。 最后再一次感谢所有在毕业设计中曾经帮助过我的良师益友和同学,以及在设计中被我引用或参考的论著的作者。随着这篇本科毕业论文的最后落笔,我四年的大学生活也即将划上一个圆满的句号。回忆这四年生活的点点滴滴,从入学时对大学生活的无限憧憬到课堂上对各位老师学术学识的深沉沉湎,从奔

54、波于教室图书馆的来去匆匆到业余生活的五彩缤纷,一切中的一切都是历历在目,让人倍感留恋,倍感珍惜。四年河南师范大学的学习生活注定将成为我人生中的一段重要旅程。四年来,我的师长、我的领导、我的同学给予我的关心和帮助,使我终身收益,我真心地感谢他们。 在本文的撰写过程中,李功丽老师作为我的指导老师,她治学严谨,学识渊博,视野广阔,为我营造了一种良好的学术氛围。置身其间,耳濡目染,潜移默化,使我不仅接受了全新的思想观念,树立了明确的学术目标,领会了基本的思考方式,掌握了通用的研究方法,而且还明白了许多待人接物与为人处世的道理。其严以律己、宽以待人的崇高风范,朴实无华、平易近人的人格魅力,与无微不至、感人至深的人文关怀,令人如沐春风,倍感温馨。正是由于她在百忙之中多次审阅全文,对细节进行修改,并为本文的撰写提供了许多中肯而且宝贵的意见,本文才得以成型。在此特向李功丽老师致以衷心的谢意!向她无可挑剔的敬业精神、严谨认真的治学态度、深厚的专业修养和平易近人的待人方式表示深深的敬意!同时感谢院领导及辅导员李海燕老师几年来对我的栽培和教育。23

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!