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

소켓 통신 관련 질문드립니다.

0 추천
안녕하세요

안드로이드를 클라이언트로 사용하고, 리눅스를 서버로 사용하는데

클라이언트에서 서버로 보낼때, string을 little endian으로 바꿔서 보내주는 것 까지는 되었습니다.

그래서, 서버에서 string을 확인하고 맞을때 다시 string을 리턴해주는데 이때 무슨 문제가 생기는건지 read할때 ioexception

이 발생합니다. 지금 의심되는 걸로는 read할때에 readline으로 스트링을 받아오게 하는데 이것을 byte array로 읽어 들여서

big endian으로 변환해준후 string을 확인해줘야 되나 싶습니다. 이 추측이 맞는걸까요?

제가 지금 직접 테스트 할 수 없어서 판단이 제대로 안되네요 ㅠ 해당 ip에서 다른 포트를 이용해서 byte array들을 주고 받

고 하는건 잘 되었는데 string을 주고 받고 하는데서 문제가 생기니 답답하네요..

도움 주시면 감사하겠습니다!
Ryann10 (530 포인트) 님이 2013년 6월 27일 질문

1개의 답변

0 추천

서버가 리눅스면, C 베이스 기반으로 만드셨을텐데,

이기종간 통신에서는 바이트 단위 처리가 기본입니다.

데이터를 보내실때 little endian 으로 변환해서 보내셨고,

서버에서도 big endian 으로 처리하는 과정없이 다시 보내셨다면,

big endian 으로 변환하는 과정이 반드시 필요할 듯 합니다.

따라서 바이트 단위로 받아서 처리할수 있는 스트림을 사용하셔야 하며,

플랫폼간의 String 을 처리하는 문자 인코딩 타입이 다르기 때문에,

이를 고려한 구현도 필요할 것 입니다.

익명사용자 님이 2013년 6월 27일 답변
...