我正在尝试通过套接字将图像从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 我将不胜感激任何帮助 提前谢谢
答案 0 :(得分:0)
我终于找到了一个非常简单的答案,这是最后要检查的内容。
当我创建套接字输入和输出流时,我做了以下
InStream =socket.getInputStream;
OutStream=socket.getOutputStream;
这允许您使用inputStream类中的方法,例如read()和write(),这些方法只读取字节。要读取任何其他类型的数据,我们必须使用dataInputStream和dataOutput流类。允许使用readInt()和writeInt等方法读取基本类型(如int,double等)的过滤器类的类型 为此,您需要更改以上内容
Instream=dataInputStream (socket.getInputStream);
OutStream=dataOutputStream (socket.getOutputStream);
就这么简单。