オンライン チャット サーバーを作成する場合、必要な ServerSocketChannel は 1 つだけでよいと思います。
ServerSocketChannel を 1 つしか取得できない場合、なぜ Selector が必要なのでしょうか?
Selector を使用する必要がある実際のプロジェクトの例を誰か教えてもらえますか?
ありがとう !
オンライン チャット サーバーを作成する場合、必要な ServerSocketChannel は 1 つだけでよいと思います。
ServerSocketChannel を 1 つしか取得できない場合、なぜ Selector が必要なのでしょうか?
Selector を使用する必要がある実際のプロジェクトの例を誰か教えてもらえますか?
ありがとう !
にいるときaccept()
、ServerSocketChannel
返されるのは新しいSocketChannel
ものであり、それread()
をwrite()
クライアントに伝えます。
選択コードは通常select()
、選択されたキーを繰り返し処理し、任意のキーを受け入れ(したがって、新しいチャネルを開きます)、任意のキー (おそらく受け入れられたクライアント チャネルの 1 つ)またはisAcceptable()
を読み書きします。isReadable()
isWritable()
非ブロッキング NIO をサポートするには、セレクターが必要です。ブロッキング NIO (デフォルト) を使用する場合、セレクターは必要ありません。
ServerSocketChannel を 1 つしか取得できない場合、なぜセレクターが必要なのか
多くの承認がSocketChannels,
あり、Selector
それらすべてを同じスレッドで処理できるためです。