Netty中NIO非阻塞通信案例分析


本篇内容主要讲解“Netty中NIO非阻塞通信案例分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Netty中NIO非阻塞通信案例分析”吧!由下图可以看出,NIO非阻塞几个属性之间的关系:多个不同客户(Socket)进入餐厅(系统)之前,先经过餐厅大门(ServerSocketChannel),这个时候门口有指导服务员(SelectionKey),看到客户(Socket)进来后,会为你安排就座(register注册到监听器中),然后点餐服务员接受到客户(Socket)被注册的关系,根据你是刚刚安排就座的客户为你上菜单,进行上菜操作。1.2 SelectionKey表示 SelectableChannel 和 Selector 之间的注册关系。每次向 选择器注册通道时就会选择一个事件(选择键)。选择键包含两个表示为整 数值的操作集。操作集的每一位都表示该键的通道所支持的一类可选择操作。1.3 register当调用 register(Selector sel, int ops) 将通道注册选择器时,选择器对通道的监听事件,需要通过第二个参数 ops 指定。1.4 监听类型可以监听的事件类型(可使用 SelectionKey 的四个常量表示):读 : SelectionKey.OP_READ (1)写 : SelectionKey.OP_WRITE (4)连接:SelectionKey.OP_CONNECT (8)接收 : SelectionKey.OP_ACCEPT (16)若注册时不止监听一个事件,则可以使用“位或”操作符连接SelectionKey的使用方法int interestOps()获取感兴趣事件集合intreadyOps()获取通道已经准备就绪的操作的集合SelectableChannel channel()获取注册通道Selector selector()返回选择器boolean isReadable()检测 Channal 中读事件是否就绪boolean isWritable()检测 Channal 中写事件是否就绪boolean isConnectable()检测 Channel 中连接是否就绪boolean isAcceptable()检测 Channel 中接收是否就绪Selector方法方法描述Set keys()所有的 SelectionKey 集合。代表注册在该Selector上的ChannelselectedKeys()被选择的 SelectionKey 集合。返回此Selector的已选择键集int select()监控所有注册的Channel,当它们中间有需要处理的 IO 操作时, 该方法返回,并将对应得的 SelectionKey 加入被选择的 SelectionKey 集合中,该方法返回这些 Channel 的数量。int select(long timeout)可以设置超时 香港云主机时长的 select() 操作int selectNow()执行一个立即返回的 select() 操作,该方法不会阻塞线程Selector wakeup()使一个还未返回的 select() 方法立即返回void close()关闭该选择器到此,相信大家对“Netty中NIO非阻塞通信案例分析”有了更深的了解,不妨来实际操作一番吧!这里是开发云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

相关推荐: Nginx中怎么转发socket

Nginx中怎么转发socket,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方 香港云主机面需求的人可以来学习下,希望你能有所收获。配置前的准备工作通过反向代理,进行转发操作另一种操作websocket 请求头看完上述内容…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

Like (0)
Donate 微信扫一扫 微信扫一扫
Previous 08/15 19:56
Next 08/15 19:57

相关推荐