Я отправляю изображения 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);
}
}
}
И эта часть является кодом на принимающей стороне.
Подскажите пожалуйста, где обрывается байт.