0

オンライン チャット サーバーを作成する場合、必要な ServerSocketChannel は 1 つだけでよいと思います。

ServerSocketChannel を 1 つしか取得できない場合、なぜ Selector が必要なのでしょうか?

Selector を使用する必要がある実際のプロジェクトの例を誰か教えてもらえますか?

ありがとう !

4

3 に答える 3

3

にいるときaccept()ServerSocketChannel返されるのは新しいSocketChannelものであり、それread()write()クライアントに伝えます。

選択コードは通常select()、選択されたキーを繰り返し処理し、任意のキーを受け入れ(したがって、新しいチャネルを開きます)、任意のキー (おそらく受け入れられたクライアント チャネルの 1 つ)またはisAcceptable()を読み書きします。isReadable()isWritable()

于 2013-01-08T04:53:52.873 に答える
0

非ブロッキング NIO をサポートするには、セレクターが必要です。ブロッキング NIO (デフォルト) を使用する場合、セレクターは必要ありません。

于 2013-01-08T07:01:04.210 に答える
0

ServerSocketChannel を 1 つしか取得できない場合、なぜセレクターが必要なのか

多くの承認がSocketChannels,あり、Selectorそれらすべてを同じスレッドで処理できるためです。

于 2013-01-09T09:30:25.857 に答える