채널에서 데이터를 사용할 수있는 경우에만 Server가 socketChannel을 읽도록 NIO Server \ Client 애플리케이션을 작성하고 싶습니다. 내 데모 응용 프로그램 테스트 목적을 위해 클라이언트가 서버에 연결할 수 있지만 서버에 요청을 보내지 마십시오. 그러나 selectionKey.isReadable() 항상 true를 반환합니다. 클라이언트가 요청을 보내지 않으므로 isReadalble()이 false를 반환해야하므로 기대합니다. 에 직면하는 문제 isReadable = true 내 피할 수없는 socketChannel에서 데이터를 읽으려고 내 애플리케이션을 만드는 것입니까? 소켓 채널에서 읽을 데이터가있을 때 내 서버에 알릴 수있는 방법이 있습니까? 이있다 IsReadable()가 항상 true를 돌려 내 서버 응용 프로그램에서() 메소드를 읽어 태그 :NIO : 버퍼에서 데이터를 사용할 수없는 경우 socketChannel.read (buffer)를 피하는 방법
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을 읽고 싶은 일 NIO 서버 \ 클라이언트 응용 프로그램을 작성하려는