일단,
c 와 자바의 구조체 타입이 틀립니다

에를 들어 C에서는 역word박식을 사용하고
(예)
258 ==> 0x01 0x02 이여야 되는데
실제로는 0x02 0x01 로 들어감

그래서 안됩니다.
그리고 float형도 마찬가지고요
자바는 point가없고 구조체가 없죠
그래서 C와 연동하기가 좀 어렵습니다

그래서 많은 분들이 C 와 JAVA 를 연동하는 방법을 물어오시는데

일단 C 와 JAVA에서 쓸수 있도록 공통된 Type은
없습니다

이유는 byteStream으로 전송하니까
(추가설명 할려면 너무길어서 생략)

그래서 일단 한번 가공해 조야되요

C의 Interger Stream을 Java의 형태로 바꾸는
예제를 한번 보겠습니다

파라메터로 소켓에서 읽은 4byte를
public int toInt( byte src[] )
{
try{
byte[] tmp = new byte[4];
tmp[0] = src[3];
tmp[1] = src[2];
tmp[2] = src[1];
tmp[3] = src[0];
DataInputStream dis = new DataInputStream ((InputStream)new ByteArrayInputStream(tmp));
return dis.readInt();
} catch(IOException e) {
return -1;
}
}

이런 형태로 쓰면 되고

C에서 구조체를 Stream으로 전송시엔
Java에서는 Class를 만들어 쓰면 편리 하지요..



ps. 아름이가 애플릿 예제 있나 물어 보길래 찾아 보다가 옛날에 몰라서 삽질했던거 생각나서 올림..
Posted by 장안동베짱e :