udpport

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

    Описание

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

    Создание

    Описание

    пример

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

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

    пример

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

    u = udpport("datagram",IPv) создает объект udport типа дейтаграммы с версией 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 объект, значение по умолчанию "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

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

    Пример: 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 multicast, если отправитель подписан на ту же группу многоадресной передачи, заданную как логический. Установите это свойство с 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 Свойства объекта

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

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

    Пример: 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 Свойства объекта

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

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

    Пример: 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