제가 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]; 이렇게 버퍼를 단계마다 만들어서 실행하면 그림이 다른것으로 가긴하는데 엄청 느려지고 오류도 잘납니다 ㅜㅜㅜ
어떻게 해결해야 할지 모르겠습니다. ㅜ 도움을 주시면 정말 감사하겠습니다.