exponenta event banner

udpport

Подключение к сокету UDP

    Описание

    udpport объект позволяет осуществлять связь UDP байтового типа и датаграммного типа с использованием сокета UDP на локальном хосте.

    Создание

    Описание

    пример

    u = udpport или u = udpport("byte") создает байтовый тип udpport объект u, с версией IP-адреса, установленной на IPV4, привязанной к сокету UDP.

    u = udpport("byte",IPv) создает байтовый тип udpport с версией IP-адреса, указанной IPv, которые могут быть либо "IPV4" или "IPV6".

    пример

    u = udpport("datagram") создает тип датаграммы udpport объект u, с версией IP-адреса, установленной на IPV4.

    u = udpport("datagram",IPv) создает объект udpport типа дейтаграммы с версией IP-адреса, указанной в IPv, которые могут быть либо "IPV4" или "IPV6".

    пример

    u = udpport(___,Name,Value) создает udpport и задает указанные свойства объекта, используя аргументы пары имя-значение. Если указано недопустимое имя или значение свойства, функция не создает объект. udpport свойства, которые могут быть установлены с помощью аргументов пары «имя-значение»: LocalHost, LocalPort, Timeout, ByteOrder, OutputDatagramSize, и EnablePortSharing.

    Входные аргументы

    развернуть все

    Версия IP-адреса, указанная как "IPV4" или "IPV6".

    Примечание

    Версия IP-адреса должна быть согласованной для всей установки. Невозможно установить связь между сокетом IPV4 и адресом IPV6 или наоборот.

    Аргументы пары «имя-значение»

    Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.

    Свойства, поддерживающие аргументы Name-Value: LocalHost, LocalPort, Timeout, ByteOrder, OutputDatagramSize, и EnablePortSharing. Из них, LocalHost, LocalPort, и EnablePortSharing становятся доступными только для чтения после udpport создается объект.

    Пример: "Timeout",60

    Свойства

    развернуть все

    Свойства, общие для байта и дейтаграммы udpport Объекты

    Это свойство доступно только для чтения.

    Тип версии для IP-адреса, указанный как "IPV4" или "IPV6".

    Пример: "IPV6"

    Типы данных: char | string

    Это свойство доступно только для чтения.

    Имя локального узла или десятичный IP-адрес, указанный как символьный вектор или строка. Если не указано значение для LocalHost при создании udpport object, значением по умолчанию является "0.0.0.0" для IPV4 или "::" для IPV6.

    Пример: "144.133.0.0"

    Типы данных: char | string

    Это свойство доступно только для чтения.

    Порт локального хоста для привязки для UDP, указанный как числовое значение от 0 до 65535. Если не указано значение для LocalPort при создании udpport объект, значение присваивается автоматически.

    Пример: 50791

    Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

    Последовательный порядок, в котором байты упорядочены в большие числовые значения, указанные как "little-endian" или "big-endian".

    Пример: "big-endian"

    Типы данных: char | string

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

    Пример: 20

    Типы данных: double

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

    Пример: 512

    Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

    Это свойство доступно только для чтения.

    Параметр, разрешающий привязку других UDP-сокетов к тому же локальному порту, что и этот сокет, указан как логический true (1) или false (0).

    Пример: true

    Типы данных: logical

    Параметр, разрешающий широковещательную передачу, указан как логический true (1) или false (0).

    Пример: true

    Типы данных: logical

    Это свойство доступно только для чтения.

    Параметр, разрешающий многоадресную передачу, указан как логический true (1) или false (0).

    Пример: true

    Типы данных: logical

    Это свойство доступно только для чтения.

    Группа IP-адресов для подписки на получение данных многоадресной рассылки. Задайте это свойство с помощью configureMulticast функция.

    Пример: "226.0.0.1"

    Типы данных: char | string

    Это свойство доступно только для чтения.

    Указать закольцовывание данных в udpport многоадресная передача, если отправитель подписан на ту же группу многоадресной передачи, заданную как логическая. Задайте это свойство с помощью configureMulticast функция.

    Пример: false

    Типы данных: logical

    Функция вызова при возникновении события ошибки, заданная как дескриптор функции.

    Пример: @myErrorFun

    Типы данных: function_handle

    Специфичные для приложения данные для этого udpport экземпляр. Это свойство общего назначения для пользовательских данных, указанных как любой тип данных MATLAB ®. Например, это свойство можно использовать для хранения данных при запуске события из функции обратного вызова.

    Пример: datetime()

    Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | char | string | struct | table | cell | function_handle | categorical | datetime | duration | calendarDuration | fi

    Байт udpport Свойства объекта

    Это свойство доступно только для чтения.

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

    Пример: 512

    Типы данных: double

    Это свойство доступно только для чтения.

    Число байтов, записанных в udpport розетка, возвращенная как двойная.

    Пример: 48

    Типы данных: double

    Это свойство доступно только для чтения.

    Терминатор для связи строк с окончанием ASCII, возвращаемый как строка или числовое значение. Если операции чтения и записи имеют разные терминаторы, значения повторно преобразуются в массив ячеек. Чтобы задать это значение свойства, используйте configureTerminator функция.

    Пример: "CR/LF"

    Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | string | cell

    Это свойство доступно только для чтения.

    Функция вызывается, когда происходит событие, доступное в байтах, указанное как дескриптор функции. Чтобы задать это значение свойства, используйте configureCallback функция.

    Пример: @myAvailFun

    Типы данных: function_handle

    Это свойство доступно только для чтения.

    Количество байтов, необходимое во входном буфере для запуска события, доступного для байтов, возвращаемого в виде числового значения. Это свойство применяется только в том случае, если BytesAvailableFcnMode является "byte". Чтобы задать это значение свойства, используйте configureCallback функция.

    Пример: 64

    Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

    Это свойство доступно только для чтения.

    Условие запуска BytesAvailableFcn обратный вызов, возвращен как "off", "byte", или "terminator". Чтобы задать это значение свойства, используйте configureCallback функция.

    Пример: "byte"

    Типы данных: string

    Дейтаграмма udpport Свойства объекта

    Это свойство доступно только для чтения.

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

    Пример: 64

    Типы данных: double

    Это свойство доступно только для чтения.

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

    Пример: 8

    Типы данных: double

    Это свойство доступно только для чтения.

    Функция, вызываемая при возникновении события, доступного для датаграмм, возвращаемая как дескриптор функции. Чтобы задать это значение свойства, используйте configureCallback функция.

    Пример: @myAvailFcn

    Типы данных: function_handle

    Это свойство доступно только для чтения.

    Количество доступных датаграмм для запуска события, доступного для датаграмм, возвращаемого в виде числового значения. Это свойство применяется только в том случае, если BytesAvailableFcnMode является "datagram". Чтобы задать это значение свойства, используйте configureCallback функция.

    Пример: 16

    Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

    Это свойство доступно только для чтения.

    Условие для запуска DatagramsAvailableFcn обратный вызов, возвращен как "off" или "datagram". Чтобы задать это значение свойства, используйте configureCallback функция.

    Пример: "datagram"

    Типы данных: string

    Функции объекта

    Функции для байтового типа и типа дейтаграммы udpport интерфейсы:

    readСчитывание данных с разъема UDP
    writeЗапись данных на сокет UDP
    configureCallbackУстановка функции обратного вызова и условия запуска для связи с сокетом UDP
    configureMulticastУстановка свойств многоадресной передачи для связи с сокетом UDP
    flushОчистить буферы сокетов UDP

    Функции для байтового типа udpport только интерфейс:

    readlineСчитывание строки данных ASCII с сокета UDP
    writelineЗапись строки данных ASCII на сокет UDP
    configureTerminatorУстановка терминатора для связи строки ASCII с сокетом UDP

    Примеры

    свернуть все

    В этом примере показаны общие задачи связи UDP байтового типа.

    Построение байтового типа udpport объект.

    u = udpport("IPV4")
    u = 
    
      UDPPort with properties:
    
         IPAddressVersion: "IPV4"
                LocalHost: "0.0.0.0"
                LocalPort: 60825
        NumBytesAvailable: 0

    Записать вектор из uint8 данные через udpport сокет на указанный адрес и порт..

    write(u,1:5,"uint8","125.0.1.4",2020);

    Прочтите 10 значений uint16 данные из udpport розетка.

    data = read(u,10,"uint16");

    Определите признак конца и отправьте строку через udpport сокет для указанного адреса и порта.

    configureTerminator(u,"CR/LF");
    writeline(u,"hello","125.0.1.4",2020);

    Считывание строки, завершенной ASCII, из udpport розетка.

    data = readline(u);

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

    configureMulticast(u,"226.0.0.1");

    Настройте обратный вызов для запуска при наличии 50 байт.

    configureCallback(u,"byte",50,@myCallbackFcn);

    Промойте выходной буфер, затем отключите и очистите udpport подключение.

    flush(u,"output");
    clear u

    В этом примере показаны общие задачи UDP-связи типа дейтаграмм.

    Создание типа дейтаграммы udpport объект.

    u = udpport("datagram","IPV4")
    u = 
    
      UDPPort with properties:
    
             IPAddressVersion: "IPV4"
                    LocalHost: "0.0.0.0"
                    LocalPort: 53465
        NumDatagramsAvailable: 0

    Записать вектор из uint8 данные через сокет udpport на указанный адрес и порт.

    write(u,1:5,"uint8","125.0.1.4",2020);

    Считать один пакет дейтаграммы как uint16 данные.

    data = read(u,1,"uint16");

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

    configureMulticast(u,"226.0.0.1");

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

    configureCallback(u,"datagram",5,@myCallbackFcn);

    Промойте выходной буфер, затем отключите и очистите udpport подключение.

    flush(u,"output");
    clear u

    В этом примере показано, как размер дейтаграммы влияет на сегментацию данных.

    Поворот echoudp на порте 3030, затем создайте тип дейтаграммы udpport объект с OutputDatagramSize из 5.

    echoudp("on",3030);
    u = udpport("datagram","OutputDatagramSize",5);

    Отправить 20 байт uint8 данные в echoudp порт.

    write(u,1:20,"uint8","127.0.0.1",3030);

    Поскольку OutputDatagramSize устанавливается равным 5, 20 байт посылаются в виде 4 пакетов дейтаграмм, каждый из которых содержит 5 байт данных.

    Убедитесь, что от эхо-сервера получено 4 дейтаграммы.

    u.NumDatagramsAvailable
    ans =
    
         4

    Прочитайте 4 дейтаграммы, полученные от эхо-сервера.

    data = read(u,u.NumDatagramsAvailable,"uint8")
    data = 
    
      1×4 Datagram array with properties:
    
        Data
        SenderAddress
        SenderPort

    Первая дейтаграмма содержит значения 1-5 (5 байт), вторая 6-10, третья 11-15 и четвертая 16-20.

    Просмотр третьей дейтаграммы.

    data(3)
    ans = 
    
      Datagram with properties:
    
                 Data: [11 12 13 14 15]
        SenderAddress: "127.0.0.1"
           SenderPort: 3030

    Разрешить несколько udpport объекты, совместно использующие один и тот же локальный порт.

    Создать udpport объект привязан к LocalPort 3030.

    u1 = udpport("LocalPort",3030,"EnablePortSharing",true);

    Создание отдельного udpport объект, использующий тот же самый порт.

    u2 = udpport("LocalPort",3030,"EnablePortSharing",true);

    EnablePortSharing должно быть true для обоих udpport объекты.

    См. также

    Функции

    Представлен в R2020b