C언어로 만든 서버와 JAVA로 만든 클라이언트의 통신 가능한가요

netbsd00의 이미지

들리는 얘기론 자료형이 틀리기 때문에

둘의 통신이 상당히 어렵다고 하던데

이 말이 사실인지요?

사실이라면 이 문제는 어떻게 해결해야

할까요? 알고 계시는분 도움좀 주세요..

dormael의 이미지

주로 모바일 플랫폼용 서버를 만들어 봤는데.

기본 데이터 타입의 바이트 오더와 부호 비트 관계만 알면 원하는 데이터를 얻는건 어려운 건 아닐것 같습니다. 서버는 자바로 만들었거든요.

물론 첨에는 좀 헤맸습니다.

바이트 오더는 같을거라구 생각했다가...

우선 테스트로 알고있는 자료형의 알고 있는 값을 보내고 받아보아서 둘의 차이를 본 다음(바이트 단위로 보면 이해가 쉽겠죠 ^^) 알맞은 컨버전 메소드나 함수를 만들면 되겠죠.

담부턴 그 함수나 메소드를 이용해 변환해 쓰기만 하믄 되니까요.

-- Signature --
青い空大好き。
蒼井ソラもっと好き。
파란 하늘 너무 좋아.
아오이 소라 더좋아.

dreampia의 이미지

그다지 어렵지 않습니다.
간단하게 모든 data를 string 형태로 주고 받을 경우에는 문제가 안 됩니다.
단지 C에서 정수/실수/struct 등의 형태로 data를 전송할 경우에 byte order, structure padding 등에 대한 문제가 있습니다.

>/dev/null 2>&1

fender의 이미지

커스텀 xml이나 웹서비스를 이용하는 것도 괜찮은 방법입니다.

----------------------------
[서명] 그놈 한국 사용자 모임 - 그놈에 대한 모든 것! - 게시판, IRC, 위키, 갤러리 등등...

nachnine의 이미지

그냥 string을 이용하면 해결됩니다.

젤 간단한 방법이죠

cedar의 이미지

fender wrote:
커스텀 xml이나 웹서비스를 이용하는 것도 괜찮은 방법입니다.

저도 Web Service를 추천합니다. 바로 이런 문제를 해결하기 위해 나온 것이죠. C/C++에서 웹서비스를 쓰는 것도 자바나 닷넷에 비해 약간 더 번거로울
뿐 그렇게 어렵지 않습니다.
see2002의 이미지

자바에서 JNI(Java Native Interface)를 이용할수도 있습니다.
서버(C/C++)와 클라이언트(Java)간에 통신을 하는 소켓모듈을
C/C++로 작성하고 자바는 JNI를 이용하여 이를 호출하면 됩니다.
어쩌면 간단하면서도 확실한 방법이지만, 다양한 플랫폼에서 실행되는
자바의 장점은 포기를 해야합니다.

mach의 이미지

dormael wrote:

바이트 오더는 같을거라구 생각했다가...


자바는 가상머신, 즉, 빅엔디안(RISC 및 모토롤라계열등), 리틀엔디안(x86기종등)을 가지는 하드웨어들과 준하는, 말그대로 가상머신입니다.
자바에서는 빅엔디안을 채택하고 있습니다.
자바가상머신 = 빅엔디안

------------------ P.S. --------------
지식은 오픈해서 검증받아야 산지식이된다고 동네 아저씨가 그러더라.

mach의 이미지

어렵다면, 인코딩때문입니다.
아시다시피 자바는 2바이트 코드를 기본으로 합니다. 유니코드지요.
유니코드 인코딩중 자바머신 내부에서 UTF16에 빅엔디안을 사용합니다.
C는 1바이트 코드를 사용하지요. ISO8859-1이 기본이겠지요.

대안은 자바의 인코딩(16비트)에 맞추던가, 아니면 C의 인코딩(8비트)에 맞추던가,
또는 제 3의 방법으로 어떤 표준 비슷한 UTF-8에 맞추면 되겠습니다요.

------------------ P.S. --------------
지식은 오픈해서 검증받아야 산지식이된다고 동네 아저씨가 그러더라.

choissi의 이미지

이런거 하나 만들어 보면 큰 흐름을 잡는데 좋겠죠

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

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <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].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <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].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <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].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <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].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.