안녕하세요.

 

현재 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값이 포함되어 있는지..

수신도중에 종료되더라구요.

 

도와주세요 선배님들.ㅠㅠ