2011-10-05 5 views
2

Java NIO를 사용하여 UDP 통신 시스템을 구축하고 API에 대한 javadoc을 탐색하면서 채널에 쓰기 프리미티브와 보내기 프리미티브가 있음을 발견했습니다. 저는 프로토 타입을 작성하여 두 가지를 모두 시도했지만, 다른 한편으로는 버퍼를 제공한다는 점에서 전혀 변화가없는 것으로 보입니다. 비슷하게, 내가 본 책은이 의심을 없애는 데 도움이되지 않는 것 같아서, 나는 물었다 : channel.write와 channel.send의 차이점은 무엇인가?NIO 채널에서 쓰기와 보내기의 차이점은 무엇입니까?

미리 감사드립니다.

답변

1

DatagramChannel .send위한 Javadoc는()에게

그램의 바이트 버퍼로부터 전송되는 차이를 알려주는 일반적인 기록 동작에 의해 마치.

이 메서드는 DatagramSocket 클래스의 send 메서드와 완전히 동일한 보안 검사를 수행합니다. 즉, 소켓이 특정의 리모트 주소에 접속되어 있지 않고, 시큐러티 매니저가 인스톨되고있는 경우,이 메서드는 송신 된 데이터 그램마다 시큐러티 매니저의 checkConnect 메소드로 타겟 주소 및 포트 번호가 허가되어 있는지를 검증합니다. 이 보안 검사의 오버 헤드는 먼저 connect 메소드를 통해 소켓을 연결하여 피할 수 있습니다.

+1

... 그리고 연결된 DatagramChannel에서만 write()를 호출 할 수 있습니다. – EJP