В этом примере показано, как отправить и получить пакеты широковещательной дейтаграммы с помощью udpport
функция.
Создайте дейтаграммный тип udpport
экземпляр вещательной компании
uBroadcaster = udpport("datagram")
uBroadcaster = UDPPort with properties: IPAddressVersion: "IPV4" LocalHost: "0.0.0.0" LocalPort: 59646 NumDatagramsAvailable: 0 Show all properties, functions
Установите EnableBroadcast
свойство допускать широковещательную передачу.
uBroadcaster.EnableBroadcast = true;
Создайте udpport
экземпляры, которые получают широковещательные данные. Эти приемники связаны с LocalPort
2020 с EnablePortSharing
включенный так, чтобы несколько udpport
объекты могут связать с тем же сокетом. uReceiver1
тип байта udpport
экземпляр и uReceiver2
дейтаграммный тип udpport
экземпляр.
uReceiver1 = udpport("byte","LocalPort",2020,"EnablePortSharing",true)
uReceiver1 = UDPPort with properties: IPAddressVersion: "IPV4" LocalHost: "0.0.0.0" LocalPort: 2020 NumBytesAvailable: 0 Show all properties, functions
uReceiver2 = udpport("datagram", "LocalPort",2020,"EnablePortSharing",true)
uReceiver2 = UDPPort with properties: IPAddressVersion: "IPV4" LocalHost: "0.0.0.0" LocalPort: 2020 NumDatagramsAvailable: 0 Show all properties, functions
Вещательная компания отправляет данные в широковещательный адрес "192.168.255.255" и порт 2020, с которым связаны приемники. В этом примере широковещательный адрес "192.168.255.255", который определяется сетевым адресом и маской подсети. Этот адрес будет отличаться на вашем компьютере.
Запишите данные 1:5 в виде uint8 данных.
write(uBroadcaster,1:5,"uint8","192.168.255.255",2020);
Теперь, когда вещательная компания отправила данные, приемники получают эти пакеты данных.
Проверьте что значение NumBytesAvailable
свойство uReceiver1
5, указывая, что пять байтов данных были получены.
uReceiver1Count = uReceiver1.NumBytesAvailable
uReceiver1Count = 5
Проверьте что значение NumDatagramsAvailable
свойство uReceiver2
1, указывая, что одна дейтаграмма была получена.
uReceiver2Count = uReceiver2.NumDatagramsAvailable
uReceiver2Count = 1
Считайте 5 байтов данных из uReceiver1
.
data1 = read(uReceiver1,uReceiver1Count,"uint8")
data1 = 1×5
1 2 3 4 5
Считайте 1 дейтаграмму, полученную на uReceiver2.
data2 = read(uReceiver2,uReceiver2Count,"uint8");
data2
udpport.datagram.Datagram
объект. Просмотрите полученные данные.
data2.Data
ans = 1×5
1 2 3 4 5
Очистите udpport
вещательная компания и экземпляры приемника.
clear uBroadcaster clear uReceiver1 clear uReceiver2