Отправка и получение многоадресных пакетов данных с использованием протокола пользовательской датаграммы

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

Создание образцов udport

Создайте udpport образец для отправки многоадресных данных.

uSender = udpport()
uSender = 
  UDPPort with properties:

     IPAddressVersion: "IPV4"
            LocalHost: "0.0.0.0"
            LocalPort: 62055
    NumBytesAvailable: 0

  Show all properties, functions

Создайте несколько udpport образцы для приема этих многоадресных данных. Убедитесь, что все эти udpport образцы привязываются к тому же LocalPort с EnablePortSharing установите значение true. В этом примере udpport образцы uReceiver1 и uReceiver2 связаны с LocalPort 3030. uReceiver1 является типом датаграммы udpport образец и uReceiver2 является типом байта udpport образец.

uReceiver1 = udpport("datagram", "LocalPort", 3030, "EnablePortSharing", true)
uReceiver1 = 
  UDPPort with properties:

         IPAddressVersion: "IPV4"
                LocalHost: "0.0.0.0"
                LocalPort: 3030
    NumDatagramsAvailable: 0

  Show all properties, functions

uReceiver2 = udpport("LocalPort", 3030, "EnablePortSharing", true)
uReceiver2 = 
  UDPPort with properties:

     IPAddressVersion: "IPV4"
            LocalHost: "0.0.0.0"
            LocalPort: 3030
    NumBytesAvailable: 0

  Show all properties, functions

Можно также создать отправителя и приемники на различных образцах MATLAB для связи между несколькими образцами MATLAB на одном компьютере.

Подготовка приемников многоадресной рассылки

Установите многоадресную рассылку для udpport многоадресные приемники, использующие configureMulticast функция. Подпишитесь на группу адресов многоадресной рассылки «226.0.0.1». Когда uSender отправляет данные в эту группу адресов многоадресной рассылки, каждую udpport образец, подписанный на этот адрес, получает многоадресные данные.

configureMulticast(uReceiver1, "226.0.0.1");
configureMulticast(uReceiver2, "226.0.0.1");

Это отражается на MulticastGroup и EnableMulticast свойства.

uReceiver1.MulticastGroup
ans = 
"226.0.0.1"
uReceiver1.EnableMulticast
ans = logical
   1

uReceiver2.MulticastGroup
ans = 
"226.0.0.1"
uReceiver2.EnableMulticast
ans = logical
   1

Отправка многоадресных данных

The uSender образец» отправляется как строковый тип данных в группу адресов многоадресной рассылки «226.0.0.1» и порт 3030.

write(uSender,"hello","string","226.0.0.1",3030);

Прием многоадресных данных

Проверьте, что приемники многоадресной передачи uReceiver1 и uReceiver2 получите данные. Считайте эти данные в MATLAB.

Убедитесь, что приемники получили многоадресные пакеты. uReceiver1 будучи типом датаграммы udpport образец получает данные как дейтаграмму. uReceiver2 будучи типом байта udpport образец получает данные в виде необработанных байтов.

uReceiver1Count = uReceiver1.NumDatagramsAvailable
uReceiver1Count = 1
uReceiver2Count = uReceiver2.NumBytesAvailable
uReceiver2Count = 5

Считайте данные от первого приемника как строку, задавая количество считываемых датаграмм.

data1 = read(uReceiver1,uReceiver1Count,"string");

data1 является udpport.datagram.Datagram объект. Просмотр полученных данных

data1.Data
ans = 
"hello"

Считайте данные от второго приемника как строку, указав количество байтов данных для чтения.

data2 = read(uReceiver2,uReceiver2Count,"string")
data2 = 
"hello"

Отписаться и очистить

Отписаться от группы адресов многоадресной рассылки.

configureMulticast(uReceiver1, "off");
configureMulticast(uReceiver2, "off");

Очистить udpport образцы.

clear uReceiver1
clear uReceiver2
clear uSender