1

この質問は、Android上のJavaのNIOに関するものです(2.2、必要に応じてより高度なAPI用にビルドできます):宛先IPアドレスに対してSocketChannel connect()を実行した後、チャネルをREAD操作に登録します。問題は、結果として選択されたキーセットに対してREADを実行しようとすると、NotYetConnectedExceptionが発生することです。READを実行する前にisConnectionPendingを使用してチャネルのステータスを確認できますが、接続が実際に機能している場合にのみREADキーを選択するのが理想的です。何か案は?

4

1 に答える 1

4

あなたはそれを間違っています。

接続が保留中の間、チャネルはにのみ登録する必要がありますOP_CONNECT

OP_CONNECT火災が発生した場合は、に電話finishConnect()して、次の手順を実行する必要があります。

  1. trueが返された場合は、登録を解除する必要があります。その後、またはOP_CONNECTを登録できます。OP_READOP_WRITE

  2. falseが返された場合は、何もしません。接続はまだ保留中です。

  3. 例外がスローされた場合、接続は失敗しているため、チャネルを閉じる必要があります。

于 2012-10-24T21:06:00.640 に答える