안드로이드 개발 질문/답변
(글 수 45,052)
소켓으로 가다가 갑자기 소켓이 끊기면서 파일전송이 다 된거 처럼 나오더라고요
예외처리에는 따로 잡히지 않고요
대게 소켓으로 전송하다가 이런현상이 나올때가 잇나요?
2011.11.29 17:58:42
보내는 쪽---
try{
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(mmSocket.getOutputStream()));
bw.write(file_name+"\n");bw.flush();
DataInputStream dis = new DataInputStream(new FileInputStream(new File(file_path)));
DataOutputStream dos = new DataOutputStream(mmSocket.getOutputStream());
int b=0;byte buf[]=new byte[512];
while((b=dis.read(buf))!=-1){
dos.write(b);dos.flush();
Log.d("파일 경로", "경로 ------> "+file_path);
Log.d("파일 전송중", "파일 보내는중 ------> "+b);
}
dis.close();dos.close();
Log.d("파일 전송", "파일 보내기");
}catch(IOException ie){
}
-----------------------------------------------------------------------------------------
받는쪽 -----
try {
socket = mmServerSocket.accept();
Log.d("접속됨", "접속됨");
is = socket.getInputStream();
br = new BufferedReader(new InputStreamReader(is));
String fileName = br.readLine();
Log.d("파일이름 전", "파일이름 전");
File f = new File("mnt/sdcard/",fileName);
Log.d("파일이름 후", "파일이름 후");
out = new FileOutputStream(f);
Log.d("fileOutputStream", "파일이름 후 FileOutputStream");
int i = 0;
byte buf[]=new byte[1024];
while((i=is.read())!=-1){
out.write((char)i);
Log.d("받고 있음", "받고있는 중");
}
Log.d("저장됨", "저장됨");
} catch (IOException e) {
Log.e(TAG, "accept() failed", e);
break;
}catch(Exception e){
Log.e("252Error","252Error"+e.toString());
}finally{
try{
if(br!=null)br.close();
if(is!=null)is.close();
if(out!=null)out.close();
}catch(IOException e){}
}
소스는 이렇게 햇는데 끊기네요 ㅜㅜ




음..받기전에 먼저 해당 파일의 크기 받아오고
파일 전송이 끝났다라고 하면
현재까지 받은 파일 크기 랑 비교해서 현재 크기가 작으면 다시 요청을 하는 로직으로 가야지요.
네트워크에 예외란...................그림자와 같은 것인듯+_+