마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

pc-앱 소켓통신간 교환 데이터 간 한국어 질문드립니다.

0 추천

pc-안드로이드 소켓연결을 한 상태에서 데이터를 주고 받습니다.

그 경우 영어나, 숫자는 잘 나오지만 한국어는 전송과정에서 수신측에서 확인할경우 이상한문자

(바이트문자? 깨져서 나옵니다)

.

혹시 이 문제를 해결할 수 있을까요? 

데이터 전송간 부분소스는 아래와 같습니다.

 

데이터 설정

public void setData(String data){
       System.arraycopy(data.trim(), 0, packet, 시작위치, data.trim().getBytes().length);
       packet[LEN_PROTOCOL_TYPE + data.trim().getBytes().length]='\0';
}
 
 

데이터 반환

public String getData(){
       return new String(packet, LEN_PROTOCOL_TYPE, LEN_DATA).trim();
       //packet 은 프로토콜  + 데이터로 구성 즉 페킷에서 type를 빼고 데이터만을 trim()으로 추출
}

 

pc - 앱 간 스트림 선언

inputStream os = cs.getOutputStream();
outputStream is = cs.getInputStream();   //cs 는 소켓
 

 

MarineSnow (750 포인트) 님이 2014년 1월 7일 질문

1개의 답변

0 추천
 
채택된 답변
서버에서 보낼 때 인코딩해서 보내고 안드로이드에서 다시 디코딩하면 되지 않을까요?

소켓통신은 아니지만 웹서버에서 한글을 통신할때도 동일한 문제가 발생하여 위와같이 해결하였네요.
인연 (31,880 포인트) 님이 2014년 1월 7일 답변
MarineSnow님이 2014년 1월 7일 채택됨
제가 정확히 잘 몰라서 다시 질문드립니다.
위의 설정이 인코딩이고 반환부분이 디코딩부분이 아닌가요?
전체 소스를 모르고 저도 전문가가 아니라 정확한 답변이 어렵지만
제가 봤을때는 인코딩,디코딩 하는 부분이 보이지가 않네요.
//packet 은 프로토콜  + 데이터로 구성 즉 페킷에서 type를 빼고 데이터만을 trim()으로 추출
이 주석에서 볼 수 있듯이 패킷이 프로토콜+데이터로 구성되어있다는 것일뿐 데이터를 인코딩 하는 부분이 보이지 않아서요.
만약 여기에 그대로 적용한다면 데이터를 인코딩하고 패킷을 구성하고
안드로이드에서 패킷에서 데이터를 추출하여 디코딩을 해야하겠네요..
자세한 답변감사드립니다.!
...