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. 结果展示

客户机端结果:
在这里插入图片描述
服务器端结果:
在这里插入图片描述
可以看到,数据没有任何丢失或者改变,任务完成。

5. 多多点赞评论哦!

  • 11
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值