Векторные сетевые функции sendvec() и recvvec()

API определен в заголовочном файле sysroot-*-kos/include/kos/vec_socket.h из состава KasperskyOS SDK.

API позволяет отправлять несколько сетевых пакетов в одном IPC-сообщении, что ускоряет работу с сетью в KasperskyOS.

При использовании функций send() или recv() стандартной библиотеки языка C для каждого вызова этих функций создается отдельный IPC-вызов, что может замедлять работу с сетью. При отправке большого количества маленьких пакетов в силу архитектуры KasperskyOS возникает большое количество IPC-сообщений.

Интерфейс sendvec()/recvvec(), в отличие от функций readv()/writev() стандартной библиотеки языка C поддерживает не только отправку/получение нескольких пакетов на один сокет, но и отправку/получение нескольких пакетов на несколько сокетов.

Сведения о функциях API приведены в таблице ниже.

Использование API

Чтобы отправить пакеты, нужно инициализировать сетевой интерфейс; создать сокеты для соединения с сервером; создать и инициализировать структуру outvec, содержащую дескрипторы сокетов для соединения с сервером и указатели на пакеты для отправки; а затем вызвать функцию sendvec().

Чтобы принять пакеты, нужно создать сокеты, принимающие запросы на входящие соединения; создать и инициализировать структуру invec, содержащую дескрипторы сокетов для приема пакетов и указатели на буферы для приема пакетов; принять входящие запросы на соединения; а затем и вызвать функцию recvvec().

Структуры данных для API определены в заголовочном файле sysroot-*-kos/include/kos/vec_types.h из состава KasperskyOS SDK.

Сведения о функциях API

Функции vec_socket.h

Функция

Сведения о функции

sendvec()

Назначение

Отправляет несколько пакетов на несколько сокетов в одном IPC-сообщении.

Параметры

  • [in,out] vec – указатель на массив, содержащий дескрипторы сокетов для соединения с сервером и указатели на пакеты для отправки. Также в этот массив записываются результаты отправки по каждому элементу (количество отправленных байт или ошибка).

    Структура определена в заголовочном файле sysroot-*-kos/include/kos/vec_types.h из состава KasperskyOS SDK.

  • [in] count – количество элементов в параметре vec.

Возвращаемые значения

В случае успеха возвращает количество успешно оправленных пакетов, иначе возвращает код ошибки.

recvvec()

Назначение

Принимает несколько пакетов из нескольких сокетов.

Параметры

  • [in,out] vec – указатель на массив, содержащий дескрипторы сокетов для приема пакетов и указатели на буферы для приема пакетов. Также в этот массив записываются результаты приема по каждому элементу (количество принятых байт или ошибка).

    Структура определена в заголовочном файле sysroot-*-kos/include/kos/vec_types.h из состава KasperskyOS SDK.

  • [in] count – количество элементов в параметре vec.

Возвращаемые значения

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

В начало