非阻塞socket

非阻塞socket中的几个重要类:

  • ServerSocketChannel(可以看作是ServerSocket的替代类, 需要通过open()的静态方法创建)
  • SocketChannel(Socket 的替代类)通过register方法向selector 注册一个事件

  • Selector类似一个观察者,SocketChannel向Selector注册了特定的事件,Selector就会监控这些事件是否发生。Selector内部原理实际是在做一个对所注册的channel的轮询访问,不断的轮询(目前就这一个算法),一旦轮询到一个channel有所注册的事情发生,比如数据来了,他就会站起来报告,交出一把钥匙,让我们通过这把钥匙来读取这个channel的内容。主要方法有:
        1. keys() 当前所有向Selector注册的SelectionKey的集合
        2. selectedKeys() 已注册的被Selector捕获的SelectionKey的集合
        3. open() 打开一个selector
        4. select() 如果注册的事情发生了,select() 函数返回值就会大于0
  • SelectionKey,当ServerSocketChannel或SocketChannel通过register()方法向Selector注册事件时,register()方法会创建一个SelectionKey对象,这SelectionKey  对象是用来跟踪注册事件的句柄。 在SelectionKey对象的有效期间
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值