들리는 얘기론 자료형이 틀리기 때문에
둘의 통신이 상당히 어렵다고 하던데
이 말이 사실인지요?
사실이라면 이 문제는 어떻게 해결해야
할까요? 알고 계시는분 도움좀 주세요..
주로 모바일 플랫폼용 서버를 만들어 봤는데.
기본 데이터 타입의 바이트 오더와 부호 비트 관계만 알면 원하는 데이터를 얻는건 어려운 건 아닐것 같습니다. 서버는 자바로 만들었거든요.
물론 첨에는 좀 헤맸습니다.
바이트 오더는 같을거라구 생각했다가...
우선 테스트로 알고있는 자료형의 알고 있는 값을 보내고 받아보아서 둘의 차이를 본 다음(바이트 단위로 보면 이해가 쉽겠죠 ^^) 알맞은 컨버전 메소드나 함수를 만들면 되겠죠.
담부턴 그 함수나 메소드를 이용해 변환해 쓰기만 하믄 되니까요.
-- Signature -- 青い空大好き。 蒼井ソラもっと好き。 파란 하늘 너무 좋아. 아오이 소라 더좋아.
그다지 어렵지 않습니다. 간단하게 모든 data를 string 형태로 주고 받을 경우에는 문제가 안 됩니다. 단지 C에서 정수/실수/struct 등의 형태로 data를 전송할 경우에 byte order, structure padding 등에 대한 문제가 있습니다.
>/dev/null 2>&1
커스텀 xml이나 웹서비스를 이용하는 것도 괜찮은 방법입니다.
----------------------------[서명] 그놈 한국 사용자 모임 - 그놈에 대한 모든 것! - 게시판, IRC, 위키, 갤러리 등등...
그냥 string을 이용하면 해결됩니다.
젤 간단한 방법이죠
자바에서 JNI(Java Native Interface)를 이용할수도 있습니다. 서버(C/C++)와 클라이언트(Java)간에 통신을 하는 소켓모듈을 C/C++로 작성하고 자바는 JNI를 이용하여 이를 호출하면 됩니다. 어쩌면 간단하면서도 확실한 방법이지만, 다양한 플랫폼에서 실행되는 자바의 장점은 포기를 해야합니다.
------------------ P.S. -------------- 지식은 오픈해서 검증받아야 산지식이된다고 동네 아저씨가 그러더라.
어렵다면, 인코딩때문입니다. 아시다시피 자바는 2바이트 코드를 기본으로 합니다. 유니코드지요. 유니코드 인코딩중 자바머신 내부에서 UTF16에 빅엔디안을 사용합니다. C는 1바이트 코드를 사용하지요. ISO8859-1이 기본이겠지요.
대안은 자바의 인코딩(16비트)에 맞추던가, 아니면 C의 인코딩(8비트)에 맞추던가, 또는 제 3의 방법으로 어떤 표준 비슷한 UTF-8에 맞추면 되겠습니다요.
이런거 하나 만들어 보면 큰 흐름을 잡는데 좋겠죠
http://www.ezdoum.com/stories.php?story=03/06/30/6597026
소스가 궁금하시면 Jad - the fast JAva Decompiler 로 디컴파일을 해보세요http://www.ezdoum.com/stories.php?story=03/06/30/4181464
울랄라~ 호기심 천국~!!http://www.ezdoum.com
텍스트 포맷에 대한 자세한 정보
<code>
<blockcode>
<apache>
<applescript>
<autoconf>
<awk>
<bash>
<c>
<cpp>
<css>
<diff>
<drupal5>
<drupal6>
<gdb>
<html>
<html5>
<java>
<javascript>
<ldif>
<lua>
<make>
<mysql>
<perl>
<perl6>
<php>
<pgsql>
<proftpd>
<python>
<reg>
<spec>
<ruby>
<foo>
[foo]
원리를 알면 어려울것 까지는...
주로 모바일 플랫폼용 서버를 만들어 봤는데.
기본 데이터 타입의 바이트 오더와 부호 비트 관계만 알면 원하는 데이터를 얻는건 어려운 건 아닐것 같습니다. 서버는 자바로 만들었거든요.
물론 첨에는 좀 헤맸습니다.
바이트 오더는 같을거라구 생각했다가...
우선 테스트로 알고있는 자료형의 알고 있는 값을 보내고 받아보아서 둘의 차이를 본 다음(바이트 단위로 보면 이해가 쉽겠죠 ^^) 알맞은 컨버전 메소드나 함수를 만들면 되겠죠.
담부턴 그 함수나 메소드를 이용해 변환해 쓰기만 하믄 되니까요.
-- Signature --
青い空大好き。
蒼井ソラもっと好き。
파란 하늘 너무 좋아.
아오이 소라 더좋아.
그다지 어렵지 않습니다.간단하게 모든 data를 string 형태로
그다지 어렵지 않습니다.
간단하게 모든 data를 string 형태로 주고 받을 경우에는 문제가 안 됩니다.
단지 C에서 정수/실수/struct 등의 형태로 data를 전송할 경우에 byte order, structure padding 등에 대한 문제가 있습니다.
>/dev/null 2>&1
커스텀 xml이나 웹서비스를 이용하는 것도 괜찮은 방법입니다.
커스텀 xml이나 웹서비스를 이용하는 것도 괜찮은 방법입니다.
----------------------------
[서명] 그놈 한국 사용자 모임 - 그놈에 대한 모든 것! - 게시판, IRC, 위키, 갤러리 등등...
윗분말씀처럼.
그냥 string을 이용하면 해결됩니다.
젤 간단한 방법이죠
[quote="fender"]커스텀 xml이나 웹서비스를 이용하는 것도
저도 Web Service를 추천합니다. 바로 이런 문제를 해결하기 위해 나온 것이죠. C/C++에서 웹서비스를 쓰는 것도 자바나 닷넷에 비해 약간 더 번거로울
뿐 그렇게 어렵지 않습니다.
자바에서 JNI(Java Native Interface)를 이용할수도 있
자바에서 JNI(Java Native Interface)를 이용할수도 있습니다.
서버(C/C++)와 클라이언트(Java)간에 통신을 하는 소켓모듈을
C/C++로 작성하고 자바는 JNI를 이용하여 이를 호출하면 됩니다.
어쩌면 간단하면서도 확실한 방법이지만, 다양한 플랫폼에서 실행되는
자바의 장점은 포기를 해야합니다.
Re: 원리를 알면 어려울것 까지는...
자바는 가상머신, 즉, 빅엔디안(RISC 및 모토롤라계열등), 리틀엔디안(x86기종등)을 가지는 하드웨어들과 준하는, 말그대로 가상머신입니다.
자바에서는 빅엔디안을 채택하고 있습니다.
자바가상머신 = 빅엔디안
------------------ P.S. --------------
지식은 오픈해서 검증받아야 산지식이된다고 동네 아저씨가 그러더라.
어렵다면, 인코딩때문입니다.아시다시피 자바는 2바이트 코드를 기본으로
어렵다면, 인코딩때문입니다.
아시다시피 자바는 2바이트 코드를 기본으로 합니다. 유니코드지요.
유니코드 인코딩중 자바머신 내부에서 UTF16에 빅엔디안을 사용합니다.
C는 1바이트 코드를 사용하지요. ISO8859-1이 기본이겠지요.
대안은 자바의 인코딩(16비트)에 맞추던가, 아니면 C의 인코딩(8비트)에 맞추던가,
또는 제 3의 방법으로 어떤 표준 비슷한 UTF-8에 맞추면 되겠습니다요.
------------------ P.S. --------------
지식은 오픈해서 검증받아야 산지식이된다고 동네 아저씨가 그러더라.
이런거 하나 만들어 보면 큰 흐름을 잡는데 좋겠죠http://ww
이런거 하나 만들어 보면 큰 흐름을 잡는데 좋겠죠
http://www.ezdoum.com/stories.php?story=03/06/30/6597026
소스가 궁금하시면
Jad - the fast JAva Decompiler 로 디컴파일을 해보세요
http://www.ezdoum.com/stories.php?story=03/06/30/4181464
울랄라~ 호기심 천국~!!
http://www.ezdoum.com
댓글 달기