Socket 통신을 할때 파일 송수신시에 용량이 크게되면 조각 조각 짤라서 여러번 보내주게 되어 있찌 않습니까?

 

Header + Data  로 하나의 패킷을 구성해서 보내주는데

 

파일 용량이 크면 Header + Data 1번,     Header + Data 2번 이런식으로 보내지게 되어있습니다.

 

중요한건.  서버에서 20000byte씩 보내도 안드로이드 스마트폰에서는 한번에 다 들어오는것이아니고

자기가 받을수 있는 만큼을 계속 누적 시키면서 받는 것으로 알고있는데요.

 

그래서 제가 한번에 받을 수 있는 버퍼 사이즈를 지정해서 "buffer[4096]" 받아 오고 있는데 문제가 있습니다.

 

 

서버에서 보내는 파일의 크기가 20000byte 이기 때문에 Header를 읽으려면 20008 byte씩 받아야하는데.

ex) 19970에서 다음 header와 data까지 30 이상의 수치로 들어와 버려서 그다음 패킷을 분석을 못하고 있는데요

 

어떻게 하면 다음 header를 파악하면서 잘 받을수 있을까요?  그냥 한꺼번에 받아서 처음에 보내줄때 총 용량을 보내주기떄문에

그것으로 비교해서 짤라서 사용하면 될것 같았지만 마지막에 잘 들어왔는지

 

success 메세지를 포함한 header가 들어 오기때문에 미치겠습니다.

 

버퍼를 4096으로 설정해도 20000을 딱 받아서 다음 header를 분석할수 있게 할수 있는 것은 없을까요?

 

 

bufferSize = new byte[4096];
nRead=in.read(bufferSize);

이런식으로 리드를 하고 있습니다.

 

그리고 리시버를 Thread로 구성하여 서버에서 Send를 하면 바로 Recevier가 응답하여 받는 역활을 하고 있습니다.