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

자바 소켓통신 소스첨부해서 질문드립니다.

0 추천
Socket socket = new Socket(dstAddress, dstPort);
                // 데이터 전송용 스트림 생성
                DataOutputStream dos = new DataOutputStream(socket.getOutputStream());
                DataInputStream dis = new DataInputStream(socket.getInputStream());
                System.out.println("파일 전송 작업을 시작합니다.");

                // 파일 이름 전송
                String fName = name;
                dos.writeUTF(fName);
                System.out.printf("파일 이름(%s)을 전송하였습니다.\n", fName);

                // 파일 내용을 읽으면서 전송
                BufferedInputStream bis = new BufferedInputStream(new ByteArrayInputStream(bitmapToByteArray(bitmap)));

                int len;
                int size = 4096;
                byte[] data = new byte[size];
                while ((len = bis.read(data)) != -1) {
                    dos.write(data, 0, len);
                }
                response = dis.readUTF();//문제의 부분

                dos.flush();
                dos.close();
                bis.close();
                System.out.println("파일 전송 작업을 완료하였습니다.");
                System.out.println("보낸 파일의 사이즈 : " + bitmapToByteArray(bitmap).length);

여기까지 안드로이드 부분이구요

 

static class startThread implements Runnable {
        Socket socket = null;
        Ocr ocr;
        String pathing = "C:/save/to.jpg";
        private DataInputStream dis;
        private DataOutputStream dos;
        private BufferedOutputStream bos;

        public startThread(Socket client) {
            // TODO Auto-generated constructor stub
            this.socket = client;
            ocr = new Ocr();
        }

        @Override
        public void run() {
            // TODO Auto-generated method stub

            System.out.println("from " + socket.getInetAddress() + ":" + socket.getPort());
            try {
                System.out.println("파일 수신 작업을 시작합니다.");
                DataInputStream dis = new DataInputStream(socket.getInputStream());
                DataOutputStream dos = new DataOutputStream(socket.getOutputStream());

                // 파일명을 전송 받고 파일명 수정.
                String fName = dis.readUTF();
                System.out.println("파일명 " + fName + "을 전송받았습니다.");

                // 파일을 생성하고 파일에 대한 출력 스트림 생성

                BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("C:/save/to.jpg"));
                System.out.println(fName + "파일을 생성하였습니다.");

                // 바이트 데이터를 전송받으면서 기록
                int sum = 0;
                int len;
                int size = 4096;
                byte[] data = new byte[size];

                while ((len = dis.read(data)) != -1) {
                    bos.write(data, 0, len);
                    sum += len;
                }
                System.out.println(data + " " + len + " " + sum);
                
                dos.writeUTF("dddd");

                bos.flush();
                bos.close();
                dis.close();
                System.out.println("파일 수신 작업을 완료하였습니다.");
                System.out.println("받은 파일의 사이즈 : " + sum);
            } catch (Exception e) {
                // TODO Auto-generated catch block
                System.err.println(e.getMessage() + " server1");
            }

        }

자바 서버측입니다.

 

response에서 read하는부분이 스트림 읽을수있는 size를 확인해보면 0이더라구요
 

잘받았다고 텍스트를 주는데도 안받아 집니다..

 도대체 왜그럴까요
안드로이드개빡 (770 포인트) 님이 2015년 11월 2일 질문
안드로이드개빡님이 2015년 11월 2일 수정
도와주소서... 정말 멘탈 나가서 한강가게생겼어여

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...