dsp。UDPSender
发送UDP报文到网络
描述
的UDPSender
对象向网络发送UDP包。
发送UDP报文到网络。
创建
dsp。UDPSender
对象并设置其属性。使用参数调用对象,就像调用函数一样。
有关系统对象如何工作的详细信息,请参见什么是系统对象?
创建
描述
返回一个UDP发送对象,udp
= dsp。UDPSenderudp
,将UDP报文发送到指定端口。
返回一个UDP发送对象,udp
= dsp。UDPSender (名称,值
)udp
,并将每个属性设置为指定的值。
属性
除非另有说明,属性为nontunable,这意味着在调用对象后不能更改它们的值。对象在调用时锁定,而释放
功能解锁它们。
如果属性为可调,您可以随时更改其值。
有关更改属性值的详细信息,请参见使用系统对象的MATLAB系统设计.
RemoteIPAddress
- - - - - -要发送数据的远程地址
“127.0.0.1”
(默认)|包含有效IP地址的字符向量|字符串标量
指定数据发送到的远端(即主机)IP地址。默认为“127.0.0.1”
,即本地主机。
数据类型:字符
RemoteIPPort
- - - - - -发送数据的远程端口
25000
(默认)|范围为[1,65535]的整数
指定数据发送到的远端IP地址上的端口。此属性在生成的代码中可调,但在模拟期间不可调。
数据类型:单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
LocalIPPortSource
- - - - - -本端IP端口的来源
汽车
(默认)|财产
指定如何确定主机的本地IP端口为汽车
或财产
.如果你指定汽车
时,对象从可用端口中动态选择端口。如果你指定财产
属性中指定的源LocalIPPort
财产。
LocalIPPort
- - - - - -发送数据的本地端口
25000
(默认)|范围为[1,65535]的整数
指定要发送数据的端口。
依赖关系
属性时应用此属性LocalIPPortSource
财产财产
.
数据类型:单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
下面的
- - - - - -内部缓冲区大小
8192
字节(默认)|范围内的整数(1, 67108864)
发送UDP报文的内部缓冲区大小,以字节为单位指定为范围内的整数(1, 67108864)
.
数据类型:单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
使用
输入参数
包
- - - - - -发送的数据
标量|向量
对象每次调用向网络发送一个UDP包。
数据类型:单
|双
|int8
|int16
|int32
|uint8
|uint16
|uint32
|逻辑
复数支持:万博1manbetx是的
对象的功能
要使用对象函数,请指定System对象™作为第一个输入参数。例如,释放system对象的系统资源obj
,使用这种语法:
发行版(obj)
例子
使用UDP进行字节传输
发送和接收UDP报文dsp。UDPSender
而且dsp。UDPReceiver
系统对象。计算成功传输的字节数。
请注意:如果您正在使用R2016a或更早的版本,请使用等效的步骤语法替换对对象的每个调用。例如,obj (x)
就变成了步骤(obj, x)
.
设置RemoteIPPort
UDP发送方和LocalIPPort
的UDP接收器31000
.将数据向量的长度设置为128
的值,该值小于MaximumMessageLength
接收者的属性。为防止丢包,请调用设置
方法在第一次调用对象算法之前。
Udpr = dsp。UDPReceiver (“LocalIPPort”, 31000);Udps = dsp。UDPSender (“RemoteIPPort”, 31000);设置(udpr);bytesSent = 0;bytesReceived = 0;dataLength = 128;
在每个迭代循环中,发送和接收一个数据包。在循环的末尾,使用流
函数输出发送方发送的字节数和接收方接收的字节数。
为k = 1:20 dataSent = uint8(255*rand(1,dataLength));bytesSent = bytesSent + dataLength;udp (dataSent);dataReceived = udpr();bytesReceived = bytesReceived + length(dataReceived);结束释放(udp);释放(udpr);流('已发送字节:%d\n', bytesSent);
发送字节数:2560
流('接收到的字节:%d\n', bytesReceived);
接收字节数:2560
在MATLAB中调整UDP端口号
的本端IP端口号dsp。UDPReceiver
对象的远端IP端口号dsp。UDPSender
对象在生成的代码中是可调的。生成一个MEX文件接收机
函数,包含算法接收正弦波数据在UDP网络。修改UDP receiver的远端IP端口号,不重新生成MEX文件。验证通过网络发送和接收的字节数。
请注意:此示例仅在R2017a或更高版本运行。
的输入接收机
函数的本地IP端口号dsp。UDPReceiver
系统对象™。该函数的输出是从UDP网络接收到的字节数。
类型接收机
function [bytesReceived] = receiver(portnumber) persistent udpRx if isempty(udpRx) udpRx = dsp.UDPReceiver('MessageDataType','double');udpRx结束。LocalIPPort = portnumber;dataReceived = udpRx();bytesReceived = length(dataReceived);
的dsp。UDPSender
对象与remoteIPPort
number设置为65000通过UDP网络发送数据。的dsp。UDPReceiver
对象与LocalIPPort
number设置为65000接收来自UDP网络的数据。数据是一个正弦波,每帧包含250个样本。
Portnumber = 65000;udpSend = dsp。UDPSender (“RemoteIPPort”portnumber);sin = dsp。SineWave (“SamplesPerFrame”, 250);bytesSent = 0;bytesReceived = 0;dataLength = 250;为i = 1:10 dataSent = sin ();bytesSent = bytesSent + dataLength;udpSend (dataSent);bytesReceived = bytesReceived + receiver(portnumber);结束流('发送字节数:%d', bytesSent);
发送字节数:2500
流('接收的字节数:%d', bytesReceived);
接收字节数:2250
通过UDP网络成功收发数据。初始数据由于开销而被丢弃。
生成一个MEX文件receiver.m
函数。
codegen接收机arg游戏{65000}
代码生成成功。
释放发送者并更改RemotePort
数字到25000。的LocalIPPort
接收方号码继续为65000。由于端口号不同,数据传输不成功。
释放(udpSend) portnumberTwo = 25000;udpSend。RemoteIPPort = portnumber2;bytesReceived = 0;bytesSent = 0;为i = 1:10 dataSent = sin ();bytesSent = bytesSent + dataLength;udpSend (dataSent);bytesReceived = bytesReceived + receiver_mex(portnumber);结束流('发送字节数:%d', bytesSent);
发送字节数:2500
流('接收的字节数:%d', bytesReceived);
接收的字节数:0
清空MEX文件,修改接收端本端IP端口号为25000。清除MEX可以在不重新生成MEX的情况下更改接收端口号。发送端口号和接收端口号匹配。验证数据传输是否成功。
清晰的墨西哥人% #好吧bytesReceived = 0;bytesSent = 0;为i = 1:10 dataSent = sin ();bytesSent = bytesSent + dataLength;udpSend (dataSent);bytesReceived = bytesReceived + receiver_mex(portnumberTwo);结束流('发送字节数:%d', bytesSent);
发送字节数:2500
流('接收的字节数:%d', bytesReceived);
接收字节数:2250
数据通过UDP网络传输成功。初始数据由于开销而被丢弃。
通过UDP网络传输复杂数据
计算正弦波的STFT,并在UDP网络上传输复杂的STFT数据。在接收端,计算接收数据的ISTFT。使用时间范围可视化发送的数据和接收的数据。
的dsp。UDPSender
对象可以发送复杂数据。为了使dsp。UDPReceiver
对象接收复杂数据时,设置IsMessageComplex
财产真正的
.
Udps = dsp。UDPSender (“RemoteIPPort”, 31000);Udpr = dsp。UDPReceiver (“LocalIPPort”, 31000,...“IsMessageComplex”,真的,...“MessageDataType”,“双”);设置(udpr);bytesSent = 0;bytesReceived = 0;dataLength = 128;
初始化dsp。STFT
而且dsp。ISTFT
具有周期性的系统对象损害
窗口长度为120个样品,重叠长度为60个样品。设置FFT长度为128。
winLen = 120;overlapLen = 60;frameLen = winLen-overlapLen;STF = dsp。STFT (...“窗口”损害(winLen“周期”),...“OverlapLength”overlapLen,“FFTLength”, 128);Istf = dsp。ISTFT (...“窗口”损害(winLen“周期”),...“OverlapLength”overlapLen,...“WeightedOverlapAdd”, 0);
输入是一个频率为100hz的正弦信号,采样率为1000hz,每个信号帧有60个采样。
sin = dsp。SineWave (...“SamplesPerFrame”winLen-overlapLen,...“频率”, 100);
初始化一个timescope
采样率为1000 Hz,时间跨度为0.09的对象。的延迟
对象在比较输入与重建输出信号时纠正重叠长度。
Ts =时隙(“SampleRate”, 1000,...“ShowLegend”,真的,...“YLimits”[1],...“TimeSpanSource”,“属性”,...“时间间隔”.09点,...“ChannelNames”, {“输入”,“重建”});Dly = dsp。延迟(“长度”, overlapLen);
通过UDP网络传输复杂的正弦波STFT数据。计算接收数据的ISTFT。比较输入,x
,到重构输出,y
.由于对象引入的延迟,与输入相比,重构输出在时间上发生了移位。因此,为了进行比较,取重构输出之间的差的范数,y
,和之前的输入,xprev
.
使用时间范围可视化信号。你可以看到重建的信号和输入信号重叠得非常紧密。
N = 0 (1,1e3);Xprev = 0;为K = 1:12 e3 x = sin ();X = stf(X);bytesSent = bytesSent + length(X)udp (X);dataReceived = udpr();如果(~isempty(dataReceived)) y = istf(dataReceived);结束N (1,k) = norm(y-xprev);Xprev = x;bytesReceived = bytesReceived + length(dataReceived);ts([海底(x), y]);结束
差值的范数非常小,表明输出信号是输入信号的完美重构版本。
max (abs (n))
Ans = 5.3870e-14
释放UDP对象。
释放(udp);释放(udpr);
由于UDP协议的易丢失特性,一些发送的数据包可能在传输过程中丢失。要检查是否丢失,请将发送的字节与接收的字节进行比较。
流('已发送字节:%d\n', bytesSent);
发送字节数:128000
流('接收到的字节:%d\n', bytesReceived);
接收字节数:128000
扩展功能
C/ c++代码生成
使用MATLAB®Coder™生成C和c++代码。
使用注意事项和限制:
系统对象在MATLAB代码生成(MATLAB编码器)
此System对象生成的可执行文件依赖于预构建的动态库文件(
. dll
文件)包含MATLAB®.使用packNGo
函数将此对象生成的代码和所有相关文件打包到压缩的zip文件中。使用这个zip文件,您可以在另一个没有安装MATLAB的开发环境中重新定位、解包和重新构建项目。详情请参见如何在MATLAB之外运行生成的可执行文件.
的RemoteIPPort
属性在生成的代码中可调,但在模拟期间不可调。
版本历史
在R2012a中引入
MATLAB命令
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入该命令来运行该命令。Web浏览器不支持MATLAB命令。万博1manbetx
您也可以从以下列表中选择一个网站:
如何获得最佳的网站性能
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。