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

PC Server 안드로이드 Client 파일 수신 문제....

0 추천
BufferedReader in = new BufferedReader(new
InputStreamReader(fileRecevSocket.getInputStream()));
 
String fileSendMessage = in.readLine();
Log.i("file send message : ",fileSendMessage);
 
String fileName = in.readLine();
Log.i("file name : ",fileName);
 
String fileSize = in.readLine();
int fileIntSize = Integer.parseInt(fileSize);
Log.i("file size : ","" + fileIntSize);
 
File f = new File("/storage/emulated/0/Download" + "/" +fileName);
 
FileOutputStream output = new FileOutputStream(f);
           byte[] buf = new byte[1024];
           int count=1;
           int number = 0;
           int length =0;
           while((length = fileRecevSocket.getInputStream().read(buf)) > 0)
           {
            Log.i("수신 완료 ", "11111111111111111111111111111");
            Log.i("전송 받은 갯수 : " , ""+ count++);
            Log.i("다운 사이즈 : " , ""+length);
            number = number + length;
            if(length > 0)
            output.write(buf,0,length);
           
            Log.i("수신 완료 ", "2222222222222222222222222222222");
            output.flush();
           }
 
현재 while문에서 블락킹 걸린 후 빠져나오지 못하고 있습니다.
 
데이터 수신은 완료되지 않았는데 ... 무슨 문제가 있는 걸까여 ??ㅠㅠ 알려주세요 고수님들...
초보이무니다 (470 포인트) 님이 2014년 11월 11일 질문

1개의 답변

0 추천

위의 루틴을 보면 while문이 왜 있는지 모르겠어요

 

수신 바이트가 크다면 while문안에 완료라는것이 있으면 안되겠져

while  밖에서  완료 처리를 해야 하고^^

 

boolean ucheck = false;

 while(ucheck!=true)

           {
            length = fileRecevSocket.getInputStream().read(buf);
            if(length > 0)
           {
                output.write(buf,0,length);
                output.flush();
            }
            else 
                ucheck = true;
           }
       }
        Log.i("수신 완료 ", "11111111111111111111111111111");
           
=========
doridori2013@nate.com

 

 

익명사용자 님이 2014년 11월 12일 답변
2014년 11월 12일 수정
...