将图片从Android发送到PC上的Matlab



我希望Matlab作为服务器和Android Java应用程序作为客户端执行。Android应该将大小为460K的字节数组传输到Matlab。我无法在Matlab上正确地获得整个数组。在Matlab中对read的第一个调用读取随机数字节(大约320K-290K) -这个数字由t.BytesAvailable正确呈现。在此之后,t.BytesAvailable变为0,并且不可能进一步读取。下面是我使用的:

Java客户端代码:
Socket socket = new Socket("10.0.0.2", 3000);
OutputStream out = socket.getOutputStream();
out.write(buffer, 0, 460000);
out.flush();
out.close();
socket.close();

Matlab服务器代码:

t=tcpip('0.0.0.0', 3000, 'NetworkRole', 'server');
set(t, 'InputBufferSize', 500000); 
fopen(t); 
pause(1);
while (get(t, 'BytesAvailable') > 0) 
    display(get(t, 'BytesAvailable'));
    data=fread(t, t.BytesAvailable, 'uint8');
end
fclose(t); 
delete(t); 
clear t 
Matlab版本:

>>版本

MATLAB版本:8.1.0.604 (R2013a)

操作系统:Microsoft Windows 7 Version 6.1 (Build 7601: Service Pack 1)

Java版本:Java 1.6.0_17-b04 with Sun Microsystems Inc.Java HotSpot(TM) Client VM混合模式

MATLAB Version 8.1 (R2013a)计算机视觉系统工具箱5.2版(R2013a)图像采集工具箱4.5版(R2013a)图像处理工具箱8.2版(R2013a)仪器控制工具箱3.3版(R2013a)MATLAB Coder Version 2.4 (R2013a)

通过TCP发送大量数据,然后立即关闭套接字可能有点"不安全"。看看这个超级信息丰富的指南- SO_LINGER -以及这个可能的干净工作的好答案。

如果你负担得起的话,一个更简单、更脏的解决方法是在发送之后和socket.close()之前等待(使用sleep调用)。

相关内容

  • 没有找到相关文章

最新更新