Широковещательная передача пакетов данных протокола дейтаграммы пользователя

В этом примере показано, как отправить и получить широковещательные пакеты датаграмм с помощью udpport функция.

Создайте udpport Broadcaster

Создайте тип датаграммы 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;

Создание приемников udport

Создание 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