Nio使用介绍
- 2016-05-28 20:15:00
- admin
- 原创 101
一、Nio使用介绍
class AbstractSelectableChannel extends SelectableChannel
class ServerSocketChannel extends AbstractSelectableChannel
1、ServerSocketChannel.open(),打开一个网络通道;
2、ServerSocketChannel.socket(),返回通道关联的ServerSocket;
3、ServerSocketChannel.configureBlocking(block),设置阻塞模式,默认处于阻塞模式;
4、ServerSocketChannel.register(sel,ops,att),注册通道到选择器,返回一个选择健SelectionKey;
5、ServerSocketChannel.bind(address),绑定本地网络地址,用于监听网络连接请求;
6、ServerSocketChannel.accept(),接受网络连接请求,新建连接成功返回SocketChannel;
class AbstractSelectableChannel extends SelectableChannel
class SocketChannel extends AbstractSelectableChannel
1、SocketChannel.open(),打开一个网络通道;
2、SocketChannel.socket(),返回通道关联的Socket;
3、SocketChannel.configureBlocking(block),设置阻塞模式,默认处于阻塞模式;
4、SocketChannel.register(sel,ops,att),注册通道到选择器,返回一个选择健SelectionKey;
5、SocketChannel.connect(address),连接网络地址;
6、SocketChannel.finishConnect(),连接是否完成;
7、SocketChannel.read(buffer),从通道读取数据;
8、SocketChannel.write(buffer),向通道写入数据;
class SelectionKey
1、SelectionKey.channel(),返回注册的通道;
2、SelectionKey.interestOps(),返回关注的操作;
3、SelectionKey.attachment(),返回注册的附加对象;
4、SelectionKey.cancel(),取消注册通道到选择器;
5、SelectionKey.isAcceptable(),需要处理事件,接受网络连接完成;
6、SelectionKey.isConnectable(),需要处理事件,连接网络地址完成;
7、SelectionKey.isReadable(),需要处理事件,读操作需要处理;
8、SelectionKey.isWritable(),需要处理事件,写操作需要处理;
class Selector
1、Selector.open(),打开一个选择器;
2、Selector.select(),返回准备好的选择键数量,阻塞操作,清除wakeup状态;
3、Selector.selectNow(),返回准备好的选择键数量,非阻塞操作,清除wakeup状态;
4、Selector.selectedKeys(),返回准备好的选择键集合,集合元素必须手动清除;
5、Selector.wakeup(),唤醒一个选择操作,只能被select或selectNow消费;
Nio代码示例: