블투를 가지고 데이터 전송을 하려 하는데 자꾸 read 부분에서 operation canceled가 나더군요..

이미지를 한쪽에서 다른쪽으로 보내는 건데 중간에 가다가 끈킵니다.

물론 android bluetoothchat 예제 부분에서 전송이랑 받는 부분만 살짝 고쳤습니다. 

빨간부분이 operation canceled가 나는 부분입니다. 

그냥 java소켓통신으로 저렇게 사용하면 이미지가 바로 정확히 전송 되는데

안드로이드에 가져다 사용하니 오류가 발생하네요...이미지도 들어오다 다 깨지게 되고~~

몇일째 씨름중인데 답변 주시면 감사하겠습니다.



//받는 부분
public void run() {
Log.i(TAG, "BEGIN mConnectedThread");
while(true){
try {
// client단에서 전송된 file내용 read 계열 stream
BufferedInputStream up = new BufferedInputStream(
mmInStream);
DataInputStream fromClient = new DataInputStream(up);
// 전송된 file명 reading
Log.d("socket","파일명 받기 대기중..."); 
//String filename = fromClient.readUTF();
//Log.d("socket",filename + "\t을 받습니다.");
Log.d("socket","\t을 받습니다.");
String files = Environment.getExternalStorageDirectory().getAbsolutePath()+"/abc.png";

// client단에서 전송되는 file 내용을 server단에 생성시킨 file에 write할수 있는 stream
FileOutputStream toFile = new FileOutputStream(files);
BufferedOutputStream outFile = new BufferedOutputStream(toFile);
int ch = 0;
while ((ch = up.read()) != -1) {
outFile.write(ch);
}
outFile.flush();
outFile.close();
fromClient.close();
//socket.close();
} catch (FileNotFoundException fnfe) {
fnfe.printStackTrace();
} catch (IOException ioe) {
ioe.printStackTrace();
connectionLost();
                break;
}
}

}



//보내는 부분
public void writes(String filename) {
// String filename = null;
BufferedOutputStream toServer = null;
BufferedInputStream bis = null;
FileInputStream fis = null;
DataOutputStream dos = null;
try {
// filename = "c:\\Tmp\\BasketBall.png";
toServer = new BufferedOutputStream(mmOutStream);
dos = new DataOutputStream(mmOutStream);
//dos.writeUTF(filename);
fis = new FileInputStream(filename);
bis = new BufferedInputStream(fis);
int ch = 0;
// ? file내용 유무 check하면서 읽어 들임과 동시에 server단으로 전송

while ((ch = bis.read()) != -1) {
toServer.write(ch);
}

toServer.flush();
toServer.close();
fis.close();
// s.close();

} catch (FileNotFoundException fnfe) {
fnfe.printStackTrace();
} catch (IOException ioe) {
ioe.printStackTrace();
}
}