MATLAB UDP-广播 简单例子

一个简单的UDP广播示例,需要开三个会话。
会话多开参见上一篇。
先运行udp_client.m 后运行udp_server.m与udp_server2.m
1.udp_client.m

ipA = '255.255.255.255'; %A的IP地址和端口号
portA = 9091;
ipB = '255.255.255.255';%B的IP地址和端口号
portB = 9090;
%%得到默认广播地址
[~,hostName] = system('hostname');
% Convert hostname to fully-qualified domain name
[~,hostAddress] = resolvehost([strtrim(hostName) '.dhcp.mathworks.com']);
% Compute broadcast address. This assumes a subnet mask of 255.255.255.0,
% which implies that address xxx.xxx.xxx.255 is the broadcast address
expression = '(?<=\d+[.]\d+[.]\d+[.])\d+';
broadcastAddress = regexprep(hostAddress, expression, '255');
%%在端口广播地址
%发送地址为portB,接受为portA
udpTransmit=udp(broadcastAddress,portB,'LocalPort',portA);
%udpTransmit=udp(ipB,portB,'LocalPort',portA);
%set(udpTransmit,'OutputBufferSize',8192);%输出缓冲区容量,相当于设置窗口?
%set(udpTransmit,'TimeOut',10);%接收和发送前超时时间

udpTransmit.EnablePortSharing = 'on';
udpTransmit.Terminator = 'CR';
udpTransmit.BytesAvailableFcnMode = 'terminator';
udpTransmit.BytesAvailableFcn = @(~,~)fprintf('Message "%s" at %s\n', fgetl(udpSender), datestr(now));
fopen(udpTransmit);

data = sin(1:6);
fprintf(udpTransmit, data);

fclose(udpTransmit);
delete(udpTransmit);
clear ipLocal portTransmit_Local ipReceive_remote portReceive_Remote
close();

2.udp_Server1.m

portA=9090; 
ipA='127.0.0.1'; 
portB=9090;

%A 接受, B 来自
udpReceive=udp(ipA,portA,'LocalPort',portB);
set(udpReceive,'TimeOut',30);
set(udpReceive,'InputBufferSize',8192);
udpReceive.EnablePortSharing = 'on';
fopen(udpReceive);
data = str2num(fscanf(udpReceive))
plot(data);
title('Server 1');
%pause(0.1)

clear ipA portA  portB
fclose(udpReceive);
delete(udpReceive);
%close();

3.udp_server2.m

portA=10095; 
ipA='127.0.0.3'; 
portB=9090;
%A 接受, B 来自
udpReceive2=udp(ipA,portA,'LocalPort',portB);
set(udpReceive2,'TimeOut',30);
set(udpReceive2,'InputBufferSize',8192);

udpReceive2.EnablePortSharing = 'on';

fopen(udpReceive2);
data2 = str2num(fscanf(udpReceive2))
plot(data2);
title('Server 2');
%pause(0.1)

clear ipA portA  portB
fclose(udpReceive2);
delete(udpReceive2);
%close();
  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值