MATLAB模拟TCP/IP Server 同局域网中的Client通信

最近的项目需要用MATLAB模拟模拟TCP/IP Server 同局域网中的Client通信,但从网上查了好多教程,都是帮助手册中官方给的实例,官方示例中在2020a版本中是可以正常运行的,如果你使用的是2018b及以前的版本,请继续往后看:

obj1 = instrfind('Type', 'tcpip', 'LocalHost', '192.168.0.120', 'LocalPort', 1680, 'Tag', '');
if isempty(obj1)
    obj1 = tcpip('192.168.0.120', 1680, 'NetworkRole', 'server');
else
    fclose(obj1);
    obj1 = obj1(1)
end
fclose(obj1);

但我运行以后,只能本机模拟client和本机server进行通信,局域网中的其他client根本连不上。经过一天的努力,终于找出原因所在。使原来,使用matlab作为server端进行通信的时候一次只能同一个远程主机通信。所以,要设置远程主机的IP地址和端口号才能进行通信。如果本机(192.168.0.120)要通过端口1680同IP地址为192.168.0.102的client通信的话,代码如下:

obj1 = instrfind('Type', 'tcpip', 'LocalHost', '192.168.0.120', 'LocalPort', 1680, 'Tag', '');
% Create the tcpip object if it does not exist
% otherwise use the object that was found.
if isempty(obj1)
    obj1 = tcpip('192.168.0.120', 1680, 'NetworkRole', 'server');
else
    fclose(obj1);
    obj1 = obj1(1)
end
% Disconnect from instrument object, obj1.
fclose(obj1);
% Configure instrument object, obj1.
set(obj1, 'RemoteHost', '192.168.0.102');
fopen(obj1);

发送数据:

fprintf(obj1, '%s\r\n', '发送的内容');

接收数据:

将接收到的数据保存到dtat1

data1=fscanf(Obj1);

将接收到的数据按  “ , ”分割成多个元胞数组保存到s中:

s=regexp(data1,',','split');

之后,你就可以对它为所欲为了。

后续会介绍server与多个client进行通信的方法。

  • 9
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值