제가 지금 안드로이드 클라이언트로 C 서버로 통신을 하고있는 도중에
C 서버에서 Send를 보낼시 안드로이드 클라이언트에서 Recv(inputstream)으로 받고 출력할때 변수값을 해쉬코드로 출력합니다..
서버에서 Send를 보낼땐 정상적으로 문자열을 보내는것을 확인하였습니다..
코드는 이렇게 되어있습니다.
//buffer.order(ByteOrder.BIG_ENDIAN);
in.read(test, 0, test.length); <- 서버에서 보낸 문자열을 읽는다.
Log.d(TAG, "111" + test);
//temprecv = new String(test, 0, test.length);
view.setText(test.toString()); // toString 메서드를 사용해서 TextView에찍어준다.
out.flush();
/// 혹시나해서 서버쪽에서하는 샌드코드도 적어봅니다.. 근데제생각에 이쪽엔이상이없습니다..
void SendTestData(SOCKET cid, char* test)
{
S_TESTA a;
strcpy(a.var,test); // 파라미터로넘어온문자열 복사해서넘김
char temp[200];
memcpy(temp, &a, sizeof(a));
send(cid, temp, sizeof(temp), 0);
printf("SENDING MSG : %s\n", test);
}
//
안드로이드 클라이언트에서 변수값을 받는건 이런식으로 되어있습니다 test변수는 byte형배열변수입니다
서버에서 보내는 자료구조는 문자열이구요. toString 메서드를 사용하면서 그렇게되는거같은데 이거외에는 다른건 아예 쓰레기값이
떠버리더라구요.. 바이트오더링은 혹시나 문제인가해서 바꾸어보았습니다. 문제점이 뭔지좀 지적해주시면감사하겠습니다.
예 제가 지금 컴퓨터를 포멧시켜서 제대로된건 못보여드렷는데 위에 말씀드렸다싶이 해쉬코드(?)가 찍힙니다 11 뒤에 B@12341251 이런식으로요 골뱅이는 있는데 앞에 영어문자는 확실치않습니다 여튼 저런식으로 찍혓엇습니다.
Log.d(TAG, "111" + test);
로그를 좀 보여주시면 좋을 듯 합니다.