그린웨버
2007-08-08 22:05:32.0
1
4845

자바와 c++간의 소켓 통신에서..(mfc쪼끔 아시는 분~ 봐주세요 제발ㅠ)


안녕하세요,

 

제가 자바와 c++간에 tcp통신을 구현해야될 일이 생겼는데요,

 

문제가 발생했습니다.

 

서로 메세지를 주고 받아야 되는데

 

자바에서 c++로 문자열 넘기는 거는 성공 시켰거든요?

 

String.getBytes("ASCII"); 이런식으로 String형 값을

ASCII값을 갖는 byte형으로 바꿔서 보내주고 mfc프로그램에서 확인까지 했는데요,

 

문제는 반대로 mfc프로그램에서 자바쪽으로 메세지를 보내야되는데

 

계속 제대로 된 값이 안넘어 오네요.. 흑흑

 

검색해 보니 자바에서는 기본적으로 unicode를 사용한다고 해서

 

CString strSend;
 BYTE* buff;

 

strSend = L"available";
  buff = (LPBYTE)(LPCTSTR)strSend;

 

이런식으로 했는데.. 이런식으로 하면 Unicode로 바뀌지 않나요??

그다음 아래처럼 Send함수 써서 데이터를 쏴주고...

pSocket->Send(buff, strSend.GetLength());

 

자바쪽에서

while((in.read(buf)) != -1) { System.out.println(buf.toString()); }

이런식으로 해줬더니...

 

출력되는건 아래와 같은 의미없는 값이네요..

[B@d9f9c3

아악~~~!

도대체 왜이런거죠?

 

해보신 분들... mfc에서 java로 문자열 보내는 방법좀 알려주세요~~~

0
0
  • 답변 1

  • 굄돌
    2007-08-09 09:29:07.0
    클라이언트는 자바이고 서버는 c인 것으로 소켓통신을 해본적이 있습니다.
    저는 다음과 같이 했습니다.
    서버쪽에서 넘어온 패킷을 byte[] 형태로 받습니다.
    그리고 byte[] 를 String으로 변환합니다.
    변환은 new String(byte[] b) 이렇게 했죠

    그랬더니 아주 잘 나왔더랩니다 ㅎㅎ
    물론 byte[] 의 크기는 패킷에 헤더부분에 정의되어 있는 값이 총 길이어서 그것을 받아서 만들었구요
    0
  • 로그인을 하시면 답변을 등록할 수 있습니다.