Write and Read Binary Data over UDP
In this example, write and read binary data with a UDP object.
Write and Read Binary Data with Byte-Type UDP Port
Configure and Connect to the Server
Use an echo server to experiment with the basic functionality of the UDP objects without connecting to an actual device. An echo server is a service that returns to the sender's address and port, the same bytes it receives from the sender.
echoudp("on",4040)Create a byte-type udpport object.
u = udpport
u =
UDPPort with properties:
IPAddressVersion: "IPV4"
LocalHost: "0.0.0.0"
LocalPort: 51595
NumBytesAvailable: 0
Show all properties, functions
Write Binary Data
Use the write function to write the values 1:10
to the server.
write(u,1:10,"localhost",4040)The function suspends MATLAB® execution until all the data is written or a timeout occurs as specified by
the Timeout property of the udpport object.
By default, the write function writes binary data as
uint8 data. For more information about specifying other data types,
see write.
Read Binary Data
Confirm the success of the write operation by viewing the
NumBytesAvailable property.
u.NumBytesAvailable
ans =
10
Since each uint8 data is one byte and ten values were written, a
total of ten bytes are available to be read from the object.
Since the udpport object is connected to an echo server, the data
you write is returned to the object. Read the first five values of data as
uint8 data.
data1 = read(u,5,"uint8")data1 =
1 2 3 4 5
After you read data, MATLAB removes it from the buffer. You can use the same command to read the next
five bytes of data as uint8 from the buffer.
data2 = read(u,5,"uint8")data2 =
6 7 8 9 10
Clean Up
When you are finished with the UDP object, clear it and turn off the echo server.
clear u echoudp("off")
Write and Read Binary Data with Datagram-Type UDP Port
Configure and Connect to the Server
Use an echo server to experiment with the basic functionality of the UDP objects without connecting to an actual device. An echo server is a service that returns to the sender's address and port, the same bytes it receives from the sender.
echoudp("on",4040)Create a datagram-type udpport object.
u = udpport("datagram")u =
UDPPort with properties:
IPAddressVersion: "IPV4"
LocalHost: "0.0.0.0"
LocalPort: 65390
NumDatagramsAvailable: 0
Show all properties, functions
Set the maximum number of bytes of data to be written in a datagram packet. This determines the number of datagrams that will be written to the server.
u.OutputDatagramSize = 10;
Write Binary Data
Use the write function to write the values 1:15
to the server.
write(u,1:15,"localhost",4040)The function suspends MATLAB execution until all the data is written or a timeout occurs as specified by
the Timeout property of the udpport object.
By default, the write function writes binary data as
uint8 data. For more information about specifying other data types,
see write.
Read Binary Data
Confirm the success of the write operation by viewing the
NumDatagramsAvailable property.
u.NumDatagramsAvailable
ans =
2
Since you specified each datagram as ten bytes and 15 bytes were written, a total of two datagrams are available to be read from the object.
Since the udpport object is connected to an echo server, the data
you write is returned to the object. Read the all the data as uint8
data.
data = read(u,u.NumDatagramsAvailable,"uint8")data =
1×2 Datagram array with properties:
Data
SenderAddress
SenderPort
View the first datagram and its values.
data1 = data(1)
data1 =
Datagram with properties:
Data: [1 2 3 4 5 6 7 8 9 10]
SenderAddress: "127.0.0.1"
SenderPort: 4040
View the second datagram and its values.
data2 = data(2)
data2 =
Datagram with properties:
Data: [11 12 13 14 15]
SenderAddress: "127.0.0.1"
SenderPort: 4040
Clean Up
When you are finished with the UDP object, clear it and turn off the echo server.
clear u echoudp("off")
See Also
udpport | echoudp | read | write