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

바이트 스트림으로 데이터 읽는데 데이터 유실현상

0 추천
안녕하세요
임베디드 디바이스(C로 코딩되어 있고요)로부터 폰에서 데이터를 읽는 상황인데요
(임베디드쪽에서 값을 던지면 폰에서 데이터를 읽는 상황)
 
1) 임베디드 디바이스에서 interval 시간이 초당 250개의 속도로 데이터를 던지면
    폰에서 InputStream을 이용해서 읽기 : 문제 없음

2) 임베디드 디바이스에서 interval 시간 없이 값을 던지는데
    폰에서 BufferedInputStream을 이용해서 읽는데
    해당 데이터를 다 읽지 못하는 것 같은데

좋은 방법이 없을까요? 잘 안풀리네요...
UnlimitedJava (910 포인트) 님이 2016년 8월 9일 질문

1개의 답변

0 추천
데이터 전송하실때 헤더에 2/4 byte를 할당하고 패킷 데이터 크기를 넣어주고, 데이터를 전송하면.. 받는 쪽에서 그 크기만큼 읽어들이면 될 것 같은데요..
mcsong (44,040 포인트) 님이 2016년 8월 9일 답변
데이터의 크기가, 즉 전송되어 파일의 크기가 넘어 옵니다. 그 크기만큼 읽는데
문제는 그 크기까지 가지 못하고 중간게 read()에서 blocking되는 상황입니다.
제 생각에는 임베디드 디바이스에서 값을 던질때 read()에서 앞쪽 데이터 얼마간을 놓치는 것으로 보입니다.
임베디드에서는 값을 다 던졌는데 폰에서는 아직 데이터를 기다리는거 아닌가 생각됩니다.
InputStream으로 읽을때보다 BufferedInputStream으로 읽으니까 읽는 횟수가 더 많은 걸로 보면...
...