Matlab下多主机UDP通信的简单实现

Matlab上使用UDP进行多主机通信(单主机模拟)

UDP是无连接的通信,只需要 监听相应的端口 ,即可进行 接收多主机 消息,通过改变 目的端口和目的主机IP 即可发送多主机消息,话不多说,直接贴代码。

%u1作为服务器,u2、u3作为客户机,u1监听所有发到端口8866的消息(其实u1,u2,u3都相当于服务器)
%u1可以接收所有8866口来的消息
%给客户机发消息时,更改相应远程主机的端口号即可(真正远程主机通信,还需要更改远程主机的IP地址)
u1=udp('222.20.37.178','RemotePort',9090,'LocalPort',8866);%与IP为222.20.36.185的远程主机(其实是我自己的IP,需要换成自己的)建立udp,远程主机端口为8866,本地主机端口为8844。
u2=udp('222.20.37.178','RemotePort',8866,'LocalPort',8844);%同上
u3=udp('222.20.37.178','RemotePort',8866,'LocalPort',8855);
u1.DatagramReceivedFcn = @instrcallback;%设置u1接收到数据包时,调用回调函数显示

fopen(u1);%打开udp连接(实际上并没有连接,udp是无连接的通信协议)
fopen(u2);%同上
fopen(u3);

fprintf(u2,'data from u2');%主机2(就是udp2)发送文本消息
fscanf(u1)%主机1接收文本消息
fprintf(u3,'data from u3');%主机3(就是udp3)发送文本消息
fscanf(u1)%主机1接收文本消息

u1.Remoteport=8844;%更改目的端口号
fprintf(u1,'u2 reveive data from u1');%向客户机发消息
fscanf(u2)

u1.Remoteport=8855;
fprintf(u1,'u3 reveive data from u1');
fscanf(u3)

fclose(u1);%关闭udp1连接
fclose(u2);%同上
fclose(u3);
delete(u1);%删除udp1连接,释放内存
delete(u2);%同上
delete(u3);
clear u1;%清除工作区中的udp1数据
clear u2;%同上
clear u3;

把IP地址改为自己的IP地址,直接运行即可。

注意:本方法不能进行公网远程通信,具体原因看我这篇文章:
MATLAB实现简单的聊天软件

UDP的公网单向通信,请看这篇文章:
Matlab公网通信的实现(NAT123实现内网穿透)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值