代码之家  ›  专栏  ›  技术社区  ›  jaywalker

SelectionKey的底层工作。利息(int ops)

  •  1
  • jaywalker  · 技术社区  · 8 年前

    我知道服务器套接字通道注册为侦听接受,当被接受时,通道注册为读取,一旦读取,它注册为写入,这是通过使用InterestTops方法将相关密钥添加到SelectionKey的兴趣集来完成的。

    然而,当我们从键中删除一些兴趣时,例如 key.interestOps(key.interestOps() & ~SelectionKey.OP_READ);

    1 回复  |  直到 8 年前
        1
  •  2
  •   Community Mohan Dere    5 年前

    然而,当我们从键中删除一些兴趣时,例如 key.interestOps(key.interestOps() & ~SelectionKey.OP_READ);

    这里到底发生了什么?

    public void interestOps(int interestOps)
    {
        this.interestOps = interestOps;
    }
    

    这是否意味着服务器将不侦听任何传入到属于此套接字的通道的请求

    这意味着 Selector 不会触发任何 OP_READ

    而源通道将忽略服务器的这一决定,并可能继续向服务器发送数据?

    或者它会以某种方式通知渠道来源这一决定。

    在分组交换术语中,如果该数据包所属的信道的兴趣密钥已“未设置”,则上述操作是否有效地与服务器接收数据包并仅丢弃数据包相同。

    推荐文章