4.채널
파일이나 네트워크 소켓, 하드웨어 등을 통해 읽기 및 쓰기와 같은 I/O 작업이 수행되는 양방향 흐름
💡
Tip
채널, Channel
“Channel”은 영어로 “수로”, “통로” 또는 “전달 경로”를 의미 정보나 데이터가 한 지점에서 다른 지점으로 흐르는 경로를 나타내는 데 사용
네트워크 통신에서 “채널”은 데이터가 전송되는 경로 또는 흐름을 의미 ex. 비디오 스트리밍이나 네트워크 통신에서 데이터가 흐르는 경로를 가리킴
2. 대표적인 Channel 클래스
2-1. FileChannel
파일에 읽고 쓰기를 수행할 때 사용되는 객체
2-2. SocketChannel, ServerSocketChannel, DatagramChannel(UDP)
네트워크를 통해 데이터를 읽고 쓸 때 사용되는 객체
기존 Java I/O에서는 입출력을 위해 스트림(Stream)을 활용하였으나, NIO에서는 Channel을 활용
3. 스트림과 채널의 차이
3-1. 채널은 Blocking & Non-Blocking 모두 지원
채널은 블로킹(Blocking) 방식 뿐만 아니라 논블로킹(Non-Blocking) 방식으로도 읽기/쓰기가 가능
3-2. 스트림은 단방향이지만 채널은 양방향으로 동작
스트림은 입력 전용 스트림인 InputStream과 출력 전용 스트림인 OutputStream을 활용 채널은 하나의 채널(SocketChannel)로 읽기 / 쓰기가 모두 가능
3-3. 채널은 항상 버퍼를 통해 데이터를 읽거나 쓰는 작업을 수행
채널에 전송된 데이터는 먼저 버퍼에 위치해야 하고, 채널에서 읽어온 모든 데이터는 버퍼를 통해 읽어들임
Last updated on