определить размер буфера во время выполнения? (программирование сокетов)

0

Чтобы определить тип сообщения, принятого в UDP-пакете, необходимо просмотреть конкретный буферный элемент [i], полученный от "recvfrom", чтобы различать тип предполагаемого сообщения. во-первых, я использую буфер в стеке для заполнения буфера (recvfrom), я знаю максимальный размер сообщения, которое я должен получить.

Поэтому скажем, что мой буфер массива составляет 300 байт, и я получаю пакеты разных размеров (например, 30, 80, 210 байтов и т.д.).... как я могу узнать полученный размер (это потому, что есть несколько других критериев, которые я тестирую для определения характера сообщения)

Знание этого размера позволит мне использовать memcpy для объекта.

Я думаю о strlen (udp packet), потому что он определяется во время выполнения, а не во время компиляции. проблема в том, что если остальная часть пакета была заполнена барахлом....

я ценю это

Теги:
sockets

1 ответ

0

recv(2), который используется для приема пакета UDP, возвращает количество полученных байтов.

  • 0
    да, вы правы, он забыл об этом ответные байты, recvfrom также возвращает количество байтов. большое спасибо
  • 0
    Вы также можете использовать memset () для установки целого буфера на; \ 0 'перед каждым вызовом recvfrom (). И максимальное количество байтов для получения является частью recvfrom (), поэтому буфер не переполняется.
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню