2

登録を解除して、後で同じセレクターで再度登録することは可能ですか? OP_ACCEPT イベントの受信を停止するには、受け入れる接続の量を制限し、key.cancel() を実行する必要があります。

server.register(selector, SelectionKey.OP_ACCEPT);
...
key.cancel()
...

接続が閉じられている場合、register(..) を再度実行できず、java.nio.channels.CancelledKeyException が発生します。

register(..) の Javadoc : このチャネルが指定されたセレクターに現在登録されているが、対応するキーが既にキャンセルされている場合、CancelledKeyException をスローします。

私がやろうとしていることを達成する方法は何ですか?

4

1 に答える 1

1

キーの でクリアしたいビットをクリアするだけですinterestOps: たとえばkey.interestOps(0).

于 2013-07-31T19:04:04.797 に答える