2013-10-01 3 views
0

저는 NIO 소켓 레벨 프로그래밍에 대해 매우 새롭고 여기에서 도움이 필요합니다. 내 응용 프로그램은 NIO socket을 기반으로하며 여기서는 비 차단 채널에 Selectors을 사용합니다.Java NIO SocketChannel isOpen 및 isConnected 메소드

isOpen()isConnected() SocketChannel의 메서드가 false을 반환 할 수 있는지 알고 싶어합니다.

소켓에 데이터를 쓰기 전에 위의 두 가지 방법을 확인하고 있습니다. 간헐적으로 이러한 메소드가 false를 리턴하는 것을 볼 수 있습니다.

+0

주어진 연결에 대해 간헐적이어서는 안됩니다. 다시 당신이 그 방법에 대한 javadocs를 읽을 것이 좋습니다;) –

답변

0

isOpen()은 닫을 때까지 true를 반환합니다.

isConnected()는 채널을 연결했거나 수락 한 경우 true를 반환합니다.

계속적으로 테스트하면 해당 내용을 이해할 수 없다는 것을 알 수 있습니다. 응용 프로그램은 자체 연결을 설정 한 상태를 이미 알고 있어야합니다. 아마도 그들은 접속 상태 인을 나타내며 피어의 연결이 끊어지면 바뀌는 것일 수도 있습니다. 그들은하지 않습니다.

데이터를 소켓에 쓰기 전에 위의 두 가지 방법을 확인하고 있습니다. 간헐적으로 이러한 메소드가 false를 리턴하는 것을 볼 수 있습니다.

나는 의심 스럽다. 이를 보게되면 코드에 버그가 있습니다.