gpt4 book ai didi

java - 从 PC 发送到 PC 以及从 PC 发送到 Android 时读取的字节数组不一致

转载 作者:太空宇宙 更新时间:2023-11-04 11:02:26 26 4
gpt4 key购买 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());
outputStream.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

最佳答案

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

 inputStream.read(imageAr);

尝试:

 inputStream.read(imageAr, 0, size);

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

已添加

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

改为:inputStream.read(sizeAr);尝试inputStream.read(sizeAr, 0, 4);

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

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

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com