MINA2.0用户手册中文版--第三章 第三节 服务端接口IoAcceptor

发布时间:2017-4-28 6:46:36 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"MINA2.0用户手册中文版--第三章 第三节 服务端接口IoAcceptor",主要涉及到MINA2.0用户手册中文版--第三章 第三节 服务端接口IoAcceptor方面的内容,对于MINA2.0用户手册中文版--第三章 第三节 服务端接口IoAcceptor感兴趣的同学可以参考一下。

要构建一个服务端,你必须选择一个IoAcceptor接口的实现类。 接口IoAcceptor 基本上来说,该接口的命名是由于accpet()方法,它主要负责在一个客户端和该服务之间创建连接。然后,服务才能接受来自这些连接的请求。有时,我们会称之为“服务端”接口。 因为我们需要提供处理多种传输协议(TCP/UDP/...),所以我们就提供了多种该接口的实现,我们已经提供了很全面的覆盖,基本上你不需要自己实现一个新的。 我们有很多这种实现类: NioSocketAcceptor:非阻塞的基于TCP协议的IoAcceptor实现NioDatagramAcceptor:非阻塞基于UDP协议的IoAcceptor实现AprSocketAcceptor:阻塞的基于APR之上的TCP协议的IoAcceptor实现VmPipeSocketAcceptor:基于虚拟机管道通信的IoAcceptor实现 只需要挑选一个满足你需求的即可 下面是IoAcceptor及其子类和子接口的类图: 创建服务 首先,你必须选择一个你要实例化的IoAcceptor的类型;其实,在这之前你就已经决定好了,因为它取决于你所要使用的通信协议。让我们通过一个实例看下他的运作: public TcpServer() throws IOException { // Create a TCP acceptor IoAcceptor acceptor = new NioSocketAcceptor(); // Associate the acceptor to an IoHandler instance (your application) acceptor.setHandler(this); // Bind : this will start the server... acceptor.bind(new InetSocketAddress(PORT)); System.out.println("Server started..."); } 就这样,你就完成了一个TCP服务器的创建过程。如果你想创建一个UDP服务器,只需要更改第一行代码为: ... // Create an UDP acceptor IoAcceptor acceptor = new NioDatagramAcceptor(); ... 停止服务 服务可以通过调用dispose()方法来进行停止,但那必须在所有的挂起的session全部被处理完之后才进行停止操作。 // Stop the service, waiting for the pending sessions to be inactive acceptor.dispose(); 当然,你也可以通过传一个布尔类型的变量给该方法,来设置是否在每一个正在执行的线程都完全执行完毕之后才进行停止服务的操作。 // Stop the service, waiting for the processing session to be properly completed acceptor.dispose( true ); 服务器状态 可以通过下面方法中的任意一个来获取IoService的状态: isActive():如果该服务可以接收传入的请求则返回trueisDisposing():如果方法dispose()被调用了则返回true,但我们无从知道服务实际是否已经停止(有些session可能还在处理)isDisposed():如果方法dispose(boolean)被调用了,且正在执行的线程已经完成执行,则返回true 管理业务处理程序 如果在服务实例化之后,就只需也只能通过调用setHandler(IoHandler)和getHandler()方法,来设置或者获取和该服务关联的IoHandler 管理过滤器链 如果你想管理过滤器链,你只需调用getFilterChain()方法,如下实例: // Add a logger filter DefaultIoFilterChainBuilder chain = acceptor.getFilterChain(); chain.addLast("logger", new LoggingFilter()); You can also create the chain before and set it into the service : 你也可以通过先创建一个过滤器链,然后再将其设置到服务中来实现,如下: // Add a logger filter DefaultIoFilterChainBuilder chain = new DefaultIoFilterChainBuilder(); chain.addLast("logger", new LoggingFilter()); // And inject the created chain builder in the service acceptor.setFilterChainBuilder(chain); (补充:由于该手册官方也在不断完善中,因此会有变化,最近一次更新时间为2012-12-17,强烈建议看原文)

上一篇:select写的UDP/TCP测试服务器
下一篇:adaboost学习(二)

相关文章

相关评论

本站评论功能暂时取消,后续此功能例行通知。

一、不得利用本站危害国家安全、泄露国家秘密,不得侵犯国家社会集体的和公民的合法权益,不得利用本站制作、复制和传播不法有害信息!

二、互相尊重,对自己的言论和行为负责。

好贷网好贷款