Как установить ReceiveBufferSize для UDPClient? или имеет смысл устанавливать? C # - PullRequest
1 голос
/ 08 марта 2010

Я реализую функцию передачи данных UDP. У меня есть несколько вопросов о буфере UDP.

Я использую UDPClient для отправки / получения UDP. и моя широкополосная пропускная способность составляет 150 КБ / с (байт / с, а не бит / с ).

  1. Я отправляю дейтаграмму 500B 27 хостам

  2. 27 хостов отправляют обратно дейтаграммы 10 КБ, если они получают.

  3. Итак, я должен получить 27 ответов, верно? однако вместо этого я получаю в среднем 8 - 12 баллов.

  4. Затем я попытался уменьшить размер ответа до 500В, да, я получаю все.

Моя мысль заключается в том, что если все 27 хостов отправят ответ 10 КБ почти одновременно, входящий трафик будет 270 КБ / с (вероятно), что превышает мою входящую пропускную способность, поэтому происходят потери. Я прав?

Но я думаю, что даже если входящий трафик превышает пропускную способность, должна ли Windows помещать дейтаграмму в буфер и ждать получения?

Я тогда подозреваю, что, возможно, ReceiveBufferSize моего UdpClient слишком мал? по умолчанию это 8092B ??

Я не знаю, в порядке ли я в этих точках. Пожалуйста, помогите мне.

1 Ответ

0 голосов
/ 10 июня 2010

Протокол UDP не гарантирует доставку, вам следует переключиться на TCP, если вам нужна доставка пакета.

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

Подробнее см. Википедия .

...