cuốn sách gpt4 ai đã làm

Đọc mảng byte không nhất quán khi gửi từ PC sang PC và từ PC sang Android

In lại Tác giả: Vũ trụ không gian 更新时间:2023-11-04 11:02:26 27 4
mua khóa gpt4 Nike

我的 PC 上有一个服务器应用程序,它读取 jpg 文件并通过套接字将其发送到 Android 设备。问题是,当Android设备接收到字节数组时,无法将其转换为位图。我创建了一个 PC 应用程序来接收相同的数组,尽管我使用相同的代码来接收数据,但接收到的数据与 Android 上的数据不同。

因此我的假设是我需要以某种方式在 Android 上以不同的方式阅读它。

PC Java服务器

        ServerSocket serverSocket = new ServerSocket(PORT);
Socket clientSocket = serverSocket.accept();

BufferedImage image = ImageIO.read(new File("D:\\test1\\test.jpg"));
ByteArrayOutputStream byteArrayoutputStream = new ByteArrayOutputStream();
ImageIO.write(image, "jpg", byteArrayoutputStream);
OutputStream outputStream = clientSocket.getOutputStream();

byte[] size = ByteBuffer.allocate(4).putInt(byteArrayoutputStream.size()).array();
outputStream.write(size);
outputStream.write(byteArrayoutputStream.toByteArray());
outStream.flush();

Thread.sleep((long)5000);
clientSocket.close();

Android 接收器

    DataInputStream inputStream = new DataInputStream(serverSocket.getInputStream());

byte[] sizeAr = new byte[4];
inputStream.read(sizeAr);
int size = ByteBuffer.wrap(sizeAr).asIntBuffer().get();

byte[] imageAr = new byte[size];
inputStream.read(imageAr);
System.out.println(imageAr.toString());
bMap = BitmapFactory.decodeByteArray(imageAr, 0, imageAr.length);//this returns null

câu trả lời hay nhất

您可能没有收到全部内容,相反:

 inputStream.read(imageAr);

thử:

 inputStream.read(imageAr, 0, size);

第二种形式将等待,直到收到 size 字节。

Đã thêm

在第一次 read() 时也执行相同的操作

改为:inputStream.read(sizeAr);thửinputStream.read(sizeAr, 0, 4);

还获取并检查 inputStream.read() 返回值,它表示实际读取了多少字节。

关于java - 从 PC 发送到 PC 以及从 PC 发送到 Android 时读取的字节数组不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46749079/

27 4 0
không gian vũ trụ
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress