exponenta event banner

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

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

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

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

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

uSender экземпляр отправляет «hello» как строковый тип данных в группу адресов многоадресной рассылки «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