LINUX.ORG.RU

sctp узнать номер потока до чтения данных

 


0

1

Подскажите возможно ли в случае sctp соединения прочитать номер потока а в идеале ещё и размер принятых данных, до фактического чтения данных (в моем случае необходимо распределить данные в несколько кольцевых очередей в зависимости от номера потока и хочется избежать лишнего копирования через промежуточный буфер)?

Функция sctp_recvmsg одновременно заполнит буфер и вернёт структуру с номером потока, что как раз ведет к двойному копированию (сама функция заполнит буфер а затем придется копировать в очередь в зависимости от номера потока)….

Попробуй sctp_recvmsg с нулевым размером буфера, ненулевым указателем на sctp_sndrcvinfo, флажками MSG_PEEK|MSG_TRUNC. Флажок MSG_PEEK оставит сообщение в сокете, нулевой размер буфера предотвратит копирование сообщение из сокета, флажок MSG_TRUNC позволит узнать размер сообщения в сокете, заполненный sctp_sndrcvinfo позволит узнать номер стрима сообщения.

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

iliyap ★★★★★
()
Последнее исправление: iliyap (всего исправлений: 2)
Ответ на: комментарий от iliyap

В моем случае надо передать большие блоки данных размером от десятков килобайт до единиц мегабайт. А sctp выбран из за того что он сам заботится о фрагментации и сборке

rusproger
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.