버퍼는 커널이 관리하는 시스템 메모리를 직접 사용 할 수 있고, 어떤 하나의 데이터 형태들을 저장하는 컨테이너이다.
ByteOrder 클래스에 대해 알아보자면, 컴퓨터 마다 바이트를 저장하는 순서가 다른데,
빅엔디언과 리틀 엔디언으로 구분할 수 있다.
네트워크로 데이터를 전송할 때 같은 엔디안 시스템을 사용하는 컴퓨터에서는 호환성 문제가 생기지 않는다. 하지만 서로 다른 엔디안을 사용하는 컴퓨터의 경우 컴퓨터가 데이터를 제대로 읽지 못하는 경우가 생길 수 있다.
윈도우에서 C/C++로 네트워크 프로그래밍을 한다면 엔디안 변환을 해서 데이터의 입출력을 맞춰야겠지만,
자바의 경우 빅 엔디안 방식을 사용하므로 바이트 순서에 대한 고려가 필요 없다.
버퍼는 시작과 끝이 있는 일직선 모양의 데이터 구조를 가지며 상태정보를 4개의 속성값에 저장한다.
속성 | 설명 |
---|---|
position | 현재 읽거나 쓸 위치 값. |
limit | 버퍼에서 읽을수 있는 한계값. |
capacity | 버퍼의 크기를 나타낸다. |
mark | 현재의 위치를 표시해둘때 사용한다. 나중에 reset()메소드를 호출하면 position을 바꿀수있다. |
버퍼클래스는 유용한 유틸리티 메소드를 제공한다.