Apache MINA NioSocketAcceptor类的实现
NioSocketAcceptor 继承AbstractPollingIoAcceptor,实现SocketAcceptor接口
public final class NioSocketAcceptor extends AbstractPollingIoAcceptor<NioSession, ServerSocketChannel> implements SocketAcceptor {}
成员变量:
private volatile Selector selector;
volatile 修饰词的使用:http://developer.zdnet.com.cn/2007/1107/612888.shtml
实现方法:
@Override
protected void init() throws Exception {
//初始化selector
selector = Selector.open();
}
@Override
protected ServerSocketChannel open(SocketAddress localAddress) throws Exception {
// 创建ServerSocket通道
ServerSocketChannel channel = ServerSocketChannel.open(); boolean success = false; try {
// 设置非阻塞的socket通道
channel.configureBlocking(false); // 获取ServerScoket
ServerSocket socket = channel.socket(); // Set the reuseAddress flag accordingly with the setting
socket.setReuseAddress(isReuseAddress()); // 绑定监听地址和端口号
socket.bind(localAddress, getBacklog()); // 在selector中注册
channel.register(selector, SelectionKey.OP_ACCEPT);
success = true;
} finally {
if (!success) {
close(channel);
}
}
return channel;
}
@Override
protected int select() throws Exception {
return selector.select();
}
@Override
protected Iterator<ServerSocketChannel> selectedHandles() {
return new ServerSocketChannelIterator(selector.selectedKeys());
}
@Override
protected void close(ServerSocketChannel handle) throws Exception {
SelectionKey key = handle.keyFor(selector); if (key != null) {
key.cancel();
} handle.close();
}
        public ServerSocketChannel next() {
            SelectionKey key = iterator.next();
            if (key.isValid() && key.isAcceptable()) {
                return (ServerSocketChannel) key.channel();
            }
            return null;
        }
Apache MINA NioSocketAcceptor类的实现的更多相关文章
- Apache MiNa 实现多人聊天室
		Apache MiNa 实现多人聊天室 开发环境: System:Windows JavaSDK:1.6 IDE:eclipse.MyEclipse 6.6 开发依赖库: Jdk1.4+.mina-c ... 
- Apache Mina(一)
		原文链接:http://www.cnblogs.com/xuekyo/archive/2013/03/06/2945826.html Apache Mina是一个能够帮助用户开发高性能和高伸缩性网络应 ... 
- Apache Mina 入门实例
		这个教程是介绍使用Mina搭建基础示例.这个教程内容是以创建一个时间服务器. 以下是这个教程需要准备的东西: MINA 2.0.7 Core JDK 1.5 或更高 SLF4J 1.3.0 或更高 L ... 
- Apache Mina原理及典型例子分析
		Apache Mina ,一个高性能 Java 异步并发网络通讯框架.利用 Mina 可以高效地完成以下任务: TCP/IP 和 UDP/IP 通讯 串口通讯 VM 间的管道通讯 SSL/TLS JX ... 
- Apache Mina开发手冊之四
		Apache Mina开发手冊之四 作者:chszs,转载需注明. 博客主页:http://blog.csdn.net/chszs 一.Mina开发的主要步骤 1.创建一个实现了IoService接口 ... 
- 网络通信框架Apache MINA
		Apache MINA(Multipurpose Infrastructure for Network Applications) 是 Apache 组织一个较新的项目,它为开发高性能和高可用性的网络 ... 
- Apache Mina(二)
		在mina的源码,整个框架最核心的几个包是 : org.apache.mina.core.service :IoService.IoProcessor.IoHandler.IoAcceptor.IoC ... 
- 使用Apache MINA框架搭建服务端
		使用MINA框架搭建服务端步骤: 1.定义一个启动服务的类MinaServer,并实现接口ServletContextListener 2.定义一个处理业务逻辑的类MinaServerHandler, ... 
- 图解Apache Mina
		Apache MINA 是一个用于简化开发构建高性能.高可扩展的网络应用框架.通过JAVA NIO在各种传输协议(如:TCP/IP.UDP/IP)上提供抽象的事件驱动异步API Apache MINA ... 
随机推荐
- c#xml序列化对象,xml标记都缩写了
			最近最后一个接口,他们的格式很严格必须是如下格式 <message> <age>20</age> <name>张三</name> </ ... 
- iOS常用的加密方式--备用
			MD5 iOS代码加密 创建MD5类,代码如下 #import <Foundation/Foundation.h> @interface CJMD5 : NSObject +(NSStri ... 
- Canny边缘检测-Wiki
			Canny edge dector 由 John F. Canny 在1986年提出. Canny 算法的发展 Canny算法的步骤 2.1 降噪 2.2 寻找图像的亮度梯度 2.3 非极大值抑制 2 ... 
- Phalcon的学习篇-phalcon和devtools的安装和设置
			A Phalcon在Windows上的安装 1 从Phalcon for Windows下载适合的DLL, 这里的适合 主要看两个方面 1 PHP的版本 2 线程是否是安全 3 编译版本 如果不清楚这 ... 
- Node.js工具模块
			在Node.js的模块库中提供实用的模块数量. 这些模块都是很常见的,并同时开发基于任何节点的应用程序频繁使用. S.N. 模块的名称和说明 1 OS Module提供基本的操作系统相关的实用功能 2 ... 
- [BZOJ 2007] [Noi2010] 海拔 【平面图最小割(对偶图最短路)】
			题目链接:BZOJ - 2007 题目分析 首先,左上角的高度是 0 ,右下角的高度是 1.那么所有点的高度一定要在 0 与 1 之间.然而选取 [0, 1] 的任何一个实数,都可以用整数 0 或 1 ... 
- "Ray, Pass me the dishes!"
			uvaLive3938:https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&pag ... 
- 带你走进EJB--MDB实现发送邮件(1)
			在实际的项目中我们有这样的需求,用户注册网站成功之后系统会自动的给注册用户发送注册成功通知邮件,而发送通知邮件的具体过程我们可以通过MDB来实现. 在用MDB来实现发送通知过程之前我们需要先了解一下J ... 
- javascript 路线整理
			前端开发很重要,编写脚本也不容易. 总结我以前的前端学习经历,基本是一团乱麻:css+javascript是在大三自学的,当时自己做课程设计,逼着自己在一个月之内,写了一个半成品的j2ee网站.当时, ... 
- nodejs 与 mysql联接
			首先安装Mysql 模块吧 npm install mysql 刚开始在网上搜索了一个测试代码,发现根本就连接不上mysql. varClient=require('mysql').Client, c ... 
