exponenta event banner

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

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

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

Создать 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