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

자바 STRING 문자열 길이 질문입니다.

0 추천

서버로 부터 xml 메시지를 수신받아 파싱하는 기능을 구현중입니다.

서버측에서 보내는 xml 메시지는 길이가 엄청 긴대요.

 

<MSG>
    <DATETIME>20150310150539</DATETIME>
    <A>2</A>
    <B>2</B>
    <C>1</C>
    <D>1</D>
..........
    <DATETIME>20150310144346</DATETIME>
    <A>2</A>
    <B>2</B>
    <C>2</C>
    <D>2</D>
</MSG>
 
와 같이 메시지를 보냅니다.
안드로이드 클라이언트 측에서는 소켓에서 수신받는 버퍼의 크기를 4096
바이트로 설정하였기 때문에 이를 구분하기위하여
서버측에서 endcode 값을 추가하여 endcode 메시지를 수신받기 이전에는
전역변수로 선언된 string의 temp값에 저장하는 방식으로 구현하였습니다.
소스는 다음과 같은대요
 
 
// 전역 변수로 된 temp 값
string tempString = "";
 
 
socketValue = 수신받은값;
 
// endCode  확인
if(socketReceived != endCode)
{
tempString += socketValue
}
else
{
string result = tempString;
}
 
여기서 tempString이 기존 string 앞쪽 값이 짤리는걸 확인하였습니다.
string 길이 문제인가 싶어 stringbuilder를 사용해도 다음과 같은 현상이 발생하네요..
어떤 문제인가요?
고수님들 답변 부탁드립니다.
 

 

꿈꾸는쭌 (1,130 포인트) 님이 2015년 4월 17일 질문

1개의 답변

0 추천

socketReceived != endCode

이 두 변수가 모두 string이면 != 가 아니라 .equals() 로 바꿔보세요 

쎄미 (162,410 포인트) 님이 2015년 4월 17일 답변
질문에는 string으로 처리되어있지만
실제로는 byte로 변환후 endCode를 확인합니다
수신받은 문자열이 0x03인지를...


예를들어
abcdefgh라는 문자열이 잘려들어올때
첫번째로는 abc
두번째로는 defgh라는 값을 기대했는데

현재로서는
첫번째 abc
두번째 def처럼 오고
나머지 gh가 짤려버리내요...
...