更新:
自从分享这篇文章以来,与这个问题相关的项目已经发生了很大变化,实际上我强烈建议避免使用 TCP 套接字传输图像,因为它会使传输速度变慢。我修复了通过 UDP 传输图像并将它们从 YUV 压缩为 JPG 而不是使用 RGB 的问题。这使得传输和重建图像的工作更容易,因为您不必处理图像的每一层。
要知道图像的大小,我只需在 UDP 数据包的第一个字节添加此信息,因此如果未正确接收大小,则套接字超时将丢弃该数据包,并且在接收下一个 UDP 时通信仍然有效包。
由于这不是原始问题的答案,因此我将其保留为未回答,以便其他有相同问题的人可以找到解决方案并将其发布在此处。
------------------------ 原帖:------------ ----
首先感谢您的帮助并为我的英语道歉,我来自西班牙。
我正在使用套接字通过 TCP 从计算机接收图像。对于每张图像,我得到层数 (RGB)、每一层的行和列,然后是每个像素的值。为了收集数据,我使用DataInputStream
.
通常它工作正常,但有时我得到错误的行数和列数值,导致下一个函数出现问题,即应用程序冻结等待永远不会发送的数据,或者只是导致保存数据的数组出现索引错误.
因此,如果行数和列数过多,我想清除数据,但是我找不到任何方法来清除DataInputStream
充满错误字节的像素值。
另外,我不知道 的大小DataInputStream
,因为大小是按以下方式计算的:Layers * Width * height
. 所以如果我没有得到这个阵营的真实值,我就无法知道我必须跳过的字节数。
问题:
任何人都知道一些方法来清除 a
DataInputStream
吗?如果不是,我应该使用另一种输入方式
BufferedInputStream
吗?