博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java网络编程-NIO
阅读量:6879 次
发布时间:2019-06-26

本文共 544 字,大约阅读时间需要 1 分钟。

构造函数

img_ad7ac1ede3581c482eb653cf9c53fa1f.png

img_5dbddc9e816c9c628707646ca69c4eed.png
img_766849c22e5db03a6411e53abbfb6734.png
img_6298c2995ab995cc8e08a209c0856656.png
img_042bf1fff8e95e2337f5e2c0dd89a3fd.png

首先放一个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,说明还有数据没有发送完成,需要继续发送

转载地址:http://mvgfl.baihongyu.com/

你可能感兴趣的文章
web应用开发常见问题解决总结
查看>>
ngx-echarts的使用
查看>>
回到顶部
查看>>
dubbo网络通讯(四)
查看>>
全局作用域中,用const和let声明的变量去哪了?
查看>>
测者的测试技术手册:Junit执行单元测试用例成功,mvn test却失败的问题和解决方法...
查看>>
设计模式(二十一)状态模式
查看>>
C语言程序设计复习指导
查看>>
[Vuex系列] - Actions的理解之我见
查看>>
Susy 2 教程 — 入门篇
查看>>
Java Bean Copy 性能大比拼
查看>>
Java中的四种引用
查看>>
第二课 如何在WINDOWS环境下搭建以太坊开发环境
查看>>
浅谈QEMU的对象系统
查看>>
Python那么火,到底能用来做什么?我们来说说Python3的主要应用
查看>>
React入门小记
查看>>
有关二维码防封的问题的解决办法
查看>>
iOS 内存字节对齐
查看>>
Leetcode 611 javascript Valid Triangle Number
查看>>
ES6新特性总结之函数和扩展运算符...
查看>>