자바(Java) NIO Scatter/Gater

자바(Java)도 NIO 패키지에서 채널(Channel)을 사용해서 버퍼(Buffer) Scatter/Gater를 지원하고 있다. 지금 하고 있는 프로젝트에서 서버와 클라이언트가 주고 받는 패킷의 형태가 Header + Body의 구조이고, 매번 단일(Single) 버퍼에 입력(put)하고 전송(send)하고 있고, 받을 때도 역시, 똑같이 하고 있다. 이 구조를 NIO의 Scatter/Gater의 형태로 바꾸면, 코드가 매우 깔끔해진다.

* 읽기(Read)

ByteBuffer header = ByteBuffer.allocate(128);
ByteBuffer body = ByteBuffer.allocate(1024);
ByteBuffer[] bufferArray = { header, body };
channel.read(buffers);

* 쓰기(Write)

ByteBuffer header = ByteBuffer.allocate(128);
ByteBuffer body   = ByteBuffer.allocate(1024);
ByteBuffer[] bufferArray = { header, body };
channel.write(buffers);

이상 간단한 Scatter/Gater의 사용방법에 대해서 알아봤다.

* Reference
http://tutorials.jenkov.com/java-nio/scatter-gather.html

답글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다.