NIO Server \ Clientアプリケーションを作成します。テスト目的のための私のデモでは、クライアントはサーバーに接続するだけでサーバーに要求を送信することはありませんが、selectionKey.isReadable()は常にtrueを返します。クライアントが要求を送信しないので、私は期待していますisReadalble() falseを返す必要があります。 私がに直面している問題は、isReadable = trueです。実際に避けたいsocketChannelからデータを読み取ろうとするアプリケーションになりますか? ソケットチャネルで読み取るデータがあるときに私のサーバーに通知する方法はありますか? はisReadable()は常にtrueを返します私のサーバーアプリケーションに()メソッドを読み込み、次のとおりです。NIO:バッファ内で利用可能なデータがない場合、socketChannel.read(バッファ)を避ける方法
private void read(SelectionKey selectionKey){
if(selectionKey.isReadable()){
SocketChannel socketChannel = (SocketChannel)selectionKey.channel();
ByteBuffer buffer = ByteBuffer.allocate(256);
try {
socketChannel.read(buffer);
String value = new String(buffer.array()).trim();
System.out.println("Value is: " +value);
} catch (IOException e) {
System.out.println("Not able to read");
}
}
}
私は、データがある場合にのみ、サーバーがSocketChannelへの読みたい1つのNIOサーバー\ Clientアプリケーションを書きたい