안녕하세요.
현재 IO쪽이 흥미가 가서 JPG파일을 송수신하는걸 연습삼아 해보고 있는데요.
어제까진 잘되었던거 같은데 제가 이것저것 막 가지고 놀다가
갑자기 이상한곳에서 막혀서 세시간째 방황중입니다.
아래 중요소스만 첨부할께요.
서버단( 데이터를 수신 받아서 파일에 저장하는 역할)
@Override
public void run() {
System.out.println("서버 : 수신 쓰레드 진입");
// TODO Auto-generated method stub
try {
while ((data = bis.read()) != -1) {
System.out.println("서버에서 수신하는 바이너리 내용" + data);
fbos.write(data);
}
fbos.flush();
fbos.close();
fos.close();
this.interrupt();
System.out.println("파일 전송이 완료되어 스레드가 종료되었습니다.");
} catch (IOException ee) {
}
}
클라이언트단( 파일에서 데이터를 읽어들여 서버로 전송하는 역할)
@Override
public void run() {
System.out.println("파일 전송 쓰레드 진입");
// TODO Auto-generated method stub
try {
while (isInterrupted() == false) {
if ((FileData = fbis.read()) != -1) {
bos.write(FileData);
System.out.println("서버로 전송되는 JPG 바이너리 내용" + FileData);
continue;
}
bos.flush();
System.out.println("클라이언트 >> 파일전송 쓰레드의 모든 스트림 Close 실시");
fbis.close();
fis.close();
this.interrupt();
System.out.println("JPG 파일 전송 완료");
}
} catch (IOException ee) {
}
}
위와 같이 작성을 했는데요..
추적끝에 문제가 이건것 같아요.
클라이언트단에서 데이터를 보내는데 얘가 막판에 -1값을 안보내서
서버쪽 쓰레드에서는 데이터의 끝인 -1값으로 비교해서 루프를 돌잖아요.
근데 클라이언트쪽에서 -1이 안와서 얘가 스트림도 안닫히고 끝이 안나는거 같거든요..
어떻게 해결을 해야될지 모르겠습니다.
임의적으로 모든정송이 끝날때 클라이언트쪽에서 서버로 -1값을 보내봤는데
JPG파일의 바이너리 데이터에 255값이 포함되어 있는지..
수신도중에 종료되더라구요.
도와주세요 선배님들.ㅠㅠ