Вопрос о размере буфера UDP при получении пакетов - PullRequest
1 голос
/ 06 сентября 2011

Предполагая, что в UDP я знаю, что пакеты, которые я получаю, имеют размер 200 байт каждый.

В программировании сокета C:

n = recvfrom(sockfd,mesg,1000,0,(struct sockaddr *)&cliaddr,&len);

, если я определяю размер буфера как 1000. Это значит, что я могу получать 5 пакетов каждый раз?Или я все равно получу только 1 пакет, а оставшиеся 800 байтов в моем буфере не используются?

tks!

Ответы [ 2 ]

2 голосов
/ 06 сентября 2011

Если вы ЗНАЕТЕ, что ваши пакеты НИКОГДА не превысят 200 байтов, то нет необходимости объявлять ваш буфер больше 200 байтов.Оставшиеся пакеты буферизуются стеком.На самом деле не существует «снижения производительности» при чтении нескольких пакетов в цикле while ().

1 голос
/ 06 сентября 2011

На сокете UDP recvfrom() будет возвращать только данные из одного пакета за раз.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...