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

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