Сломано при получении изображения - PullRequest
0 голосов
/ 29 мая 2020

Я отправляю изображения udp в java. Однако при передаче изображения размер файла сохраняется в 0 байтах. Я не знаю, какая часть кода неверна.

try {
                ds = new DatagramSocket();
                String str = "start";
                DatagramPacket dp = new DatagramPacket(str.getBytes(), str.getBytes().length, ip, 8888);
                ds.send(dp);
                String data = "excercise.jpg";
                dp = new DatagramPacket(data.getBytes(), data.getBytes().length, ip, 8888);
                ds.send(dp);

                DataInputStream dis = new DataInputStream(new BufferedInputStream(new FileInputStream(f)));
                FileInputStream fi = new FileInputStream(f);

                System.out.printf(dis.toString());

                byte[] by = new byte[1024];
                int count = 0;
                while (true) {
                    // dis 를 읽어 by 배열에 0부터 length만큼 저장
                    // 읽은 갯수 리턴.
                    int x = dis.read(by, 0, by.length);
                    if (x == -1)
                        break;
                    // 읽은 갯수까지 'x'
                    dp = new DatagramPacket(by, x, ip, 8888); // *
                    ds.send(dp);
                    System.out.println(x);

                    count++;
                }

Это код отправителя.

try {
                DatagramSocket ds = new DatagramSocket(8888);
                File file = null;
                DataOutputStream dos = null;

                while(true) {
                    DatagramPacket dp = new DatagramPacket(buf, buf.length);
                    ds.receive(dp);
                    String str = new String(dp.getData()).trim();

                    if (str.equals("start")) {
                        dp = new DatagramPacket(new byte[1024], 1024);
                        ds.receive(dp);
                        str = new String(dp.getData()).trim();
                        file = new File("C:/hyebin/hyebin" + str);
                        dos = new DataOutputStream(new BufferedOutputStream(new FileOutputStream(file)));

                    } else if (str.equals("end")) {
                        System.out.println("전송완료");
                        dos.close();
                        ds.close();
                        break;
                    } else {

                        dos.write(str.getBytes(), 0, str.getBytes().length);
                    }
                }
            }

И эта часть является кодом на принимающей стороне.

Подскажите пожалуйста, где обрывается байт.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...