마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

java서버로 부터 안드로이드 클라이언트에 이미지 저장.

0 추천

일단 서버에서는 파일을 열어서 buffer에 byte[]buf = new byte[in.available()]; 이런식으로 사이즈에 맞게 해줬습니다.

 

그리고.. 이 버퍼를 읽어서 ObjectOutputStream을 통하여 안드로이드 클라이언트에 전송했습니다.

 

여기까지는 잘 가는거 같은데....

 

안드로이드에서

public void run() {
    try {

        Client = new Socket(socknum);
        ObjectInputStream ois = new ObjectInputStream(Client.getInputStream());
        System.out.println("여기1?");
       while(true){
           try {
               System.out.println("여기2?");

               byte[] buf = (byte[]) ois.readObject();

               FileOutputStream fos = new FileOutputStream("/sdcard/DCIM/2.JPG");

               fos.write(buf);

               System.out.println("쓰기완료");
               

 

요렇게 작성했는데 여기 1과 여기 2는 프린트 문에 찍히지만 그뒤로

 

 

10-26 21:04:35.050  31372-31416/com.ebookfrenzy.TeacherClient W/System.err﹕ java.io.StreamCorruptedException: Wrong format: ac
10-26 21:04:35.050  31372-31416/com.ebookfrenzy.TeacherClient W/System.err﹕ at java.io.ObjectInputStream.corruptStream(ObjectInputStream.java:675)
10-26 21:04:35.050  31372-31416/com.ebookfrenzy.TeacherClient W/System.err﹕ at java.io.ObjectInputStream.readNonPrimitiveContent(ObjectInputStream.java:788)
10-26 21:04:35.050  31372-31416/com.ebookfrenzy.TeacherClient W/System.err﹕ at java.io.ObjectInputStream.readObject(ObjectInputStream.java:1983)
10-26 21:04:35.050  31372-31416/com.ebookfrenzy.TeacherClient W/System.err﹕ at java.io.ObjectInputStream.readObject(ObjectInputStream.java:1940)
10-26 21:04:35.050  31372-31416/com.ebookfrenzy.TeacherClient W/System.err﹕ at com.ebookfrenzy.chatclienttest.MainActivity$PdfThread.run(MainActivity.java:283)

 

 

요렇게 포멧이 맞지 않는다느니... 그렇게 말합니다.  어떻게 해결해야할까요 ㅠㅠㅠㅠ

 

찾아봐도 잘 모르겠어서 질문 남깁니다. 

 

 

참고로 https://www.youtube.com/watch?v=foZFmzM1JUk 이분의 영상을 참고했습니다.

익명사용자 님이 2016년 10월 26일 질문
2016년 10월 26일 수정

1개의 답변

0 추천
수신타입이 byte[]인데 왜 ObjectInputstream을 쓰시나요 그냥 InputStream으로 읽어보세요.

혹시 보내는쪽에서도 ObjectOutputstream으로 보낸다면 일반OutputStream으로 보내도록 수정하여 보세요.
Development Guy (70,570 포인트) 님이 2016년 10월 27일 답변
...