MATLAB使用TCPIP协议传输矩阵
1. 简单介绍
其实以前的博文已经介绍了TCPIP通信的基本方法,但是还是有很多同学问如何传输矩阵,这里就是来解答一下大家的疑惑。
矩阵传输的作用: 1. 简单的用于传输实验的数据矩阵 2. 图片数据的传输
2. 代码示例
服务器端代码:
%% 远程主机为localhost,即本地主机,本地端口为30000,作为服务器使用
server=tcpip('localhost',30000,'NetworkRole','server');
%% 设置接收和发送缓存区的最大容量,这里设置的是1000*1000*8,也就是一个1000*1000的double类型的数组大小
server.InputBuffersize=8000000;
server.OutputBuffersize=8000000;
%% 打开连接,等待,直到一个本地端口来对接
fopen(server);
%% 查询是否收的消息,如果收到,发出提醒,就退出循环
while(1)
if server.BytesAvailable>0
disp("The num of bytes received is: "+string(server.BytesAvailable));
break;
end
end
%% 接收缓存区的消息,这里ButesAvailable的值代表接收的字节数,转成double类型,需要除8
dataRecv=fread(server,server.BytesAvailable/8,'double');
%% 重新组织接收到的信息,转化为10*10的矩阵,并展示
matrix=reshape(dataRecv,[10,10]);
disp("The matrix received is: ");
disp(matrix);
%% 任务完成,关闭服务器
fclose(server);
客户机端代码:
%% 远程主机为localhost,即本地主机,要连接的目的端口为30000,作为客户机使用
client=tcpip('localhost',30000,'NetworkRole','client');
%% 设置接收和发送缓存区的最大容量,这里设置的是1000*1000*8,也就是一个1000*1000的double类型的数组大小
client.InputBuffersize=8000000;
client.OutputBuffersize=8000000;
%% 打开连接,寻找目的服务器,如果未找到,报错
fopen(client);
%% 生成将要发送的数据,dataSend是向量,通过reshape变为矩阵matrix
dataSend=sin(1:100);
matrix=reshape(dataSend,[10,10]);
disp("The matrix which will be sent out is :");
disp(matrix);
%% 向服务器发送数据,这里要先将matrix变为向量,方法就是使用matrix(:),就可以正常发送啦
fwrite(client,matrix(:),'double');
%% 任务完成,关闭客户机
fclose(client);
我感觉注释都比较清楚哈,就不再解释了,有问题可以移步评论区
3. 使用说明
这里仍旧是本地主机之间的通信,打开两个matlab,分别新建文件,分别拷贝服务器和客户机代码。
服务器:
客户机:
先运行服务器Server,后运行客户机Client,即可。
4. 结果展示
客户机端结果:
服务器端结果:
可以看到,数据没有任何丢失或者改变,任务完成。