通过套接字将图像作为字节数组从matlab发送到java

通过套接字将图像作为字节数组从matlab发送到java,matlab,Matlab,我试图通过套接字将图像从matlab服务器发送到java客户机。首先,我将图像转换为字节数组,并在客户端使用readFully方法,该方法需要指定长度。 问题是字节数组的大小从一个图像变为另一个图像,当我通过write()方法发送大小时,它在客户端无法正确读取。 下面是我的代码片段 Matlab服务器 %% convert image Javaimage=im2java2d (image); Arraystream=ByteArrayOutputStream; ImageIO.write (j

我试图通过套接字将图像从matlab服务器发送到java客户机。首先,我将图像转换为字节数组,并在客户端使用readFully方法,该方法需要指定长度。 问题是字节数组的大小从一个图像变为另一个图像,当我通过write()方法发送大小时,它在客户端无法正确读取。 下面是我的代码片段

Matlab服务器

%% convert image 
Javaimage=im2java2d (image);
Arraystream=ByteArrayOutputStream;
ImageIO.write (javaimage,'jpg', arraystream)
Arraystream.flush ();
Bytearray=arraystream.toByteArray;

%% send size through output stream
Outstream=write (size (byteArray, 1))
%% send array
outStream=write (byteArray);
在客户端,我尝试了许多方法,如read、readInt、readDouble,但我认为问题在于我尝试使用writeInt()的write()方法,但matlab没有识别它,尽管我包括了所需的库: Java.io Java.net Java.io.dataoutputstream Java.io.datainputstream

我还应该包括数组的大小通常超过10000 我将非常感谢任何帮助
提前谢谢你

我终于找到了答案,答案非常简单,根本不需要检查

当我创建套接字输入和输出流时,我执行了以下操作

     InStream =socket.getInputStream; 
     OutStream=socket.getOutputStream; 
这允许您使用inputStream类中的方法,如read()和write(),它们是只读取字节的方法。要读取任何其他类型的数据,我们必须使用dataInputStream和dataOutput stream类,它们是允许读取基本类型(如int、double、,使用readInt()和writeInt()等方法进行etc 要做到这一点,您需要按如下方式更改上述内容

 Instream=dataInputStream (socket.getInputStream); 
 OutStream=dataOutputStream (socket.getOutputStream);

就这么简单。

Arraystream=ByteArrayOutputStream;未定义的函数或变量“ByteArrayOutputStream”。你能帮我解决这个问题吗?@user1850484,我真的很想帮你。你能通过显示代码来澄清一下吗??也许你没有导入所需的Java库,我已经解决了这个问题。非常感谢你。