Alexeytur
@Alexeytur

Почему UdpClient.Reсeive() не теряет пакеты?

У меня имеется приложение-сервер, которое в бесконечном цикле генерируется случайные числа, которые отправляются через UdpClient.Send() на широковещательный групповой адрес.
Есть приложение-клиент, которое в также в бесконечном цикле с помощью UdpClient.Reсeive() принимает пакеты. Пока всё нормально. Теперь я хочу сымитировать потерю пакетов - перед UdpClient.Reсeive() ставлю Thread.Sleep(1000). Но потери не происходит - после слипа клиент получает следующий по порядку отправления пакет, как будто слипа и не было, а пакеты хранились где-то в промежуточном месте. Мало того, даже если завершить сервер, то клиент продолжит получать откуда-то пакеты, пока не получит все, отправленные сервером.
В чем проблема?
  • Вопрос задан
  • 67 просмотров
Решения вопроса 1
@Sumor
У UdpClient есть буфер, в который складываются полученные данные.
Размер его доступен (get set) в свойстве ReceiveBufferSize.
Если данные приходят, а вы их не прочитали, то данные по кругу затираются - то есть происходит потеря пакетов.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через TM ID
Похожие вопросы
от 3 000 до 5 000 usd.
SLC7 Екатеринбург
от 50 000 до 90 000 руб.
от 40 000 до 70 000 руб.
20 янв. 2019, в 22:33
30000 руб./за проект
20 янв. 2019, в 22:03
1000 руб./за проект