构造函数
首先放一个NIO的使用流程
1、创建ServerSocketChannel,配置为非阻塞模式
2、绑定监听,配置TCP参数,例如backlog大小;
3、创建一个独立的IO线程,用于轮询多路复用器Selector;
4、创建Selector,将之前创建的ServerSocketChannel注册到Selector上,监听SelectionKey.ACCEPT
5、启动IO线程,在循环体中之行Selector.select()方法,轮询就绪的Channel;
6、当轮训到了处于就绪状态的channel时,需要对其进行判断,如果是OP_ACCEPT状态,说明是新的客户端接入,则调用ServerSocketChannel.accept()方法接受新的客户端;
7、设置新借入的客户端链路SocketChannel为非阻塞模式,配置其他的一些TCP
8、将SocketChannel注册到Selector,监听OP_READ操作位;
9、如果轮训的Channel为OP_READ,则说明SocketChannel中,有心得就绪的数据包需要读取,则构造ByteBuffer对象,读取数据包;
10、如果轮训的Channel为OP_WRITE,说明还有数据没有发送完成,需要继续发送
网友评论