그리고 구조체 패킹도 유의해야 합니다. C/C++쪽에서 자료를 읽을 때 수신한 바이트들을 구조체에다 memcpy 하면 데이터가 어긋날 수 있습니다. 자바에는 구조체 패킹이 없으니까요. MSVC(visual studio)는 기본적으로 8바이트 단위로 패킹됩니다. http://www.benjaminlog.com/entry/structure-packing
JVM은 기본적으로 어떤 플랫폼에서든 Big Endian입니다. C/C++은 플랫폼에 따라 다르지만 윈도라면 Little Endian이구요. 자바쪽에서 Little-Endian으로 바꿔서 주시는게 편할거에요. java.nio.ByteBuffer 클래스를 쓰시면 고정된 크기의 메시지를 만들기 쉽습니다. 엔디안도 쉽게 바꿀 수 있어요.