В этом примере показано, как отправить и получить широковещательные пакеты датаграмм с помощью 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