on_sock_data_arrival - событие

Назначение:Для сокетов, не использующих TLS, событие возникает, когда в буфере приёма (RX) сокета есть хотя бы один байт данных (то есть для этого сокета sock.rxlen > 0). Если сокет использует TLS, событие возникает, когда хотя бы один байт данных есть в буфере приёма (RX) TLS сокета (то есть для этого сокета sock.tlsrxlen > 0).
Объявление:on_sock_data_arrival
См. также:sock.nextpacket

Подробности

При входе в обработчик этого события свойство sock.num автоматически переключается на сокет, для которого возникло событие. Следующее событие on_sock_data_arrival для конкретного сокета не возникает, пока не обработано предыдущее.

Для сокетов без TLS:

Для извлечения данных из буфера приёма (RX) используйте метод sock.getdata.

Для TCP (sock.protocol = 1 - PL_SOCK_PROTOCOL_TCP) деления на отдельные пакеты нет, и все приходящие данные поступают как «поток». Обрабатывать все данные в буфере приёма (RX) за один раз не обязательно. Если выйти из обработчика on_sock_data_arrival, когда в буфере приёма (RX) остаются необработанные данные, немедленно возникнет следующее событие on_sock_data_arrival.

Для UDP (sock.protocol= 0 - PL_SOCK_PROTOCOL_UDP) буфер приёма (RX) сохраняет границы датаграмм. Каждый вход в обработчик on_sock_data_arrival даёт возможность обработать очередную UDP-датаграмму. Если содержимое датаграммы обработано не полностью, непрочитанная часть отбрасывается при выходе из обработчика.

Для конкретного сокета это событие не возникает, если для него методом sock.redir задано перенаправление буфера.

Для сокета с Transport Layer Security (TLS):

Для извлечения данных из буфера приёма (RX) TLS используйте метод sock.tlsgetdata.

Если выйти из обработчика события on_sock_data_arrival, когда в буфере приёма (RX) TLS остаются необработанные данные, немедленно возникнет следующее событие on_sock_data_arrival. Содержимое буфера приёма (RX) не учитывается, и событие не возникает, даже если буфер приёма (RX) не пуст.

Исходный материал Tibbo обновлён 12 августа 2022Оригинал на docs.tibbo.com · Сообщить об ошибке