-1

イベント駆動型の HTTP Web サーバーを作成しようとしています。使用するスレッドは 1 つだけなので、イベントをキューに入れ、非同期で処理する必要があります (Java NIO も使用しています)。しかし、私は最初のステップだけで立ち往生しています。を開きましたServerSocketChannel。要求が入ったときに新しいSocketChannel接続を取得する方法がわかりません。Java を介してアクセスできるオペレーティング システムのキューはありますか? (Java は OS に依存しないため、よくわかりません) ブロッキング呼び出しを使用したくありません。

私が間違った方向に進んでいる場合は、助けていただければ幸いです。

ありがとう。

4

1 に答える 1

0

必要がある:

  • セレクターを作成する
  • ServerSocketChannelを非ブロッキングモードにします
  • を使用してSSCをセレクターに登録しますOP_ACCEPT
  • select()ループを作成します。これは、NIOチュートリアルにあります。

select()ループには、isAcceptable()trueを返すキーがあります。つまり、接続を受け入れるにはServerSocketChannel.accept()を呼び出す必要があります。これにより、が返さSocketChannelれます。これを非ブロッキングモードにして、に登録する必要がありますOP_READ

次に、isReadable()trueを返すキーが発生します。つまり、関連するキーを読み取る必要があります。SocketChannel.

これらすべての例は、NIOチュートリアルにあります。これよりもはるかに複雑になります;-)

于 2013-02-04T23:58:56.160 に答える