제가 mysql데이터베이스에 있는 내용을(이미지는 파일경로) 소켓으로 클라이언트로 보내는 것입니다.

제가 서버(자바)에서 클라이언트(안드로이드)로 소켓을 통해 이미지를 연속해서 전달하려고 하고 있습니다.

객체클래스를 만들어서 이미지를 byte[]형태로 만들어서 보내는 형식입니다.

 

byte[] buffer = new byte[1024000];  <<< 버퍼를 만들어놓고

 

rs = stmt.executeQuery(sql);   <<< 이렇게 불러와서

 

while(rs.next()) {   <<< 이 while 문 안에서   

파일경로 = rs.getString("picture");

 

File imagefile = new File(파일경로);

is = new FileInputStream(imagefile);

 

try {
               int n; 
               while ((n = is.read(buffer)) >= 0) {

 

               entryclass entry = new entryclass(0, name, profil, number, buffer, datgle);   <<< 이것은 객체클래스
               out.writeObject(entry);
            
               try {Thread.sleep(100);} catch (InterruptedException e) {;}
               }
          } finally {
              is.close();
          }

 

buffer안에는 계속 맨 처음에 들어갔던 값만 있고 바뀌지가 않고 보내집니다 ㅜㅜ.

따라서 사진도 똑같은 맨처음 사진만 나오구여 ㅜㅜ . 

 

자세히 알아보니 서버에서 buffer 값을 프린트해보니 항상 같다는 것을 알 수 있었습니다. 그래서 첫 단계가 끝날때 buffer를 초기화 시키기 위해    

 java.util.Arrays.fill(buffer,(byte)0);   ,   이런것과    

 for(int i = 0 ; i < buffer.length ; i++) {
      buffer[i] = 0;
     }

 

이런것도 해보고    파일을 하나 만들어서 FileOutputStream 으로 write 하고 flush() 해도    buffer값이 항상 있고 초기화가 되지 않습니다 ㅜㅜㅜㅜ

 

그런데 while 문 안쪽에    ---->> byte buffer[] = new byte[1024000];   이렇게 버퍼를 단계마다 만들어서  실행하면 그림이 다른것으로 가긴하는데 엄청 느려지고 오류도 잘납니다 ㅜㅜㅜ

 

어떻게 해결해야 할지 모르겠습니다. ㅜ 도움을 주시면 정말 감사하겠습니다.