Alexeytur
@Alexeytur

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

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

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

Войти через центр авторизации
Похожие вопросы
ИММА Москва
До 120 000 руб.
PHYGITALISM Москва
от 70 000 руб.
COSMOS Москва
от 110 000 до 140 000 руб.