2010년 5월 14일 금요일

Java NIO 사용시 주의사항

network programming 시 java nio 의 ByteBuffer 를 사용하는데 문제가 생겼다.

다음과 같이 buffer 를 할당했다. (ByteBuffer 는 allocate 와 allocateDirect 함수를 제공한다)
ByteBuffer buffer = ByteBuffer.allocateDirect(4096);

아래와 같은 증상이 나타났다.
- socket channel 을 이용해서 read 했는데 값을 정상적으로 받지 못했다.
- 실행할 때마다 값의 내용이 달랐다.
- android 2.1 기기에서는 문제가 발생하지 않았는데 android 1.6 기기에서는 문제가 발생했다.

allocateDirect 함수를 allocate 로 변경해서 문제를 해결했다.

java nio 참고 : http://eincs.tistory.com/entry/java-nio-bytebuffer-channel

댓글 없음:

댓글 쓰기