Задать вопрос
@pixik

Что будет при приёме udp пакетов, если клиентская программа их не обрабатывает?

Доброго времени!
Возник вопрос, есть сервер и клиент. Клиент стримит пакеты UDP на сервер, но поток плотный. на сервере происходит какая то обработка. Как быть, если за время обработки в буфере сервера накопилось очень много пакетов и они постоянно дополняются?
Посоветуйте пожалуйста источник, где про подобные проблемы можно почитать, или может быть дружеский совет:)
Всем спасибо:)
  • Вопрос задан
  • 531 просмотр
Подписаться 1 Оценить Комментировать
Решения вопроса 1
Если Ваш процесс принципиально (среднестатистически) не успевает обрабатывать такой поток - Вам все равно придется сбрасывать эти пакеты (либо это будет происходить в буфере сокета на уровне ОС ( smallvoid.com/article/winnt-winsock-buffer.html ), либо у Вас в приложении (приемом пакета без обработки) - решайте сами).

Если же поток от клиентов неравномерный и Вы не успеваете только в какие-то локальные моменты времени, а среднестатистически быстродействие сервера достаточно, то записывайте все пакеты в свой прикладной (например, циклический) буфер (хоть на несколько мегабайт) - это очень быстрая операция; а потом считывайте процессом-обработчиком. (Если конечно, задержка обработки не сказывается у Вас на целях предметной области).
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@ShamblerR
удп пакеты в отличие от tcp просто пропадают их наличие в другой момент времяни просто ненужны, в них нет ни контрольного бита четности ничего для повторной передачи тк что все что можно с ними сделать это слить в дев нул.
Ответ написан
Комментировать
Rulexec
@Rulexec
Метатеоретик теории типов
Аккуратнее со своими UDP-протоколами. Вам нужен congestion control, чтобы регулировать скорость передачи пакетов с одной стороны на другую.

Клиент серверу может слать, в принципе, сколько угодно, если ему провайдер даёт лишь пару мегабит. Но если сервер «плюнет» своим стогигабитным каналом одному клиенту чего-нибудь — будет довольно плохо (пакеты будут сбрасываться ещё по пути к клиенту, а из того что дойдёт всё равно сбросится большая часть, ну и сети придётся не очень по вкусу подобное).
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы