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

제가 짠 소켓코드가 잘못되엇나요?

0 추천
 
BufferedOutputStream bos = new BufferedOutputStream(soc.getOutputStream());
DataOutputStream dos = new DataOutputStream(bos);
 
FileInputStream fis = new FileInputStream(filePath);
BufferedInputStream bis = new BufferedInputStream(fis);
 
while(true) {
int data = bis.read();
if(data == -1) {
break;
}
Log.i("SEND", ""+data);
bos.write(data);
}
bos.flush();
bis.close();
bos.close();
}
 
위의 코드는 소켓통신을 이용하여 폰에서 서버로 파일을 전송하는 부분입니다.
위와 같이 파일전송 부분을 구현하였습니다.
혹시 제가 짠 코드가 잘못되었는지요?
파일전송을 잘되는데 속도를 조금 더 올릴 수 있는 방법이 있을까요?
 
갸아악 (21,260 포인트) 님이 2013년 7월 8일 질문

1개의 답변

+1 추천
한 바이트씩 read하다보니, 루프가 지나치게 많은 듯 합니다. read(byte[], int, int) , write(byte[], int, int) 메소드를 사용해서,

여러 바이트씩 읽어 전송해보세요.
사악미소 (65,330 포인트) 님이 2013년 7월 8일 답변
어차피 BufferedStream을 사용해서 상관없지 않나요?
...