Чтобы избежать насыщения полосы пропускания, вам нужно применить какое-то ограничение скорости. TCP фактически уже делает это, но в некоторых случаях это может быть неэффективно. Например, он понятия не имеет, вы считаете, что трафик TCP или UDP является более важным.
Для реализации любой формы ограничения скорости, связанной с UDP, сначала необходимо рассчитать коэффициент потерь UDP. Пакеты UDP должны иметь порядковые номера, а затем клиент должен посчитать, сколько уникальных пакетов он фактически получил, и отправить эту информацию обратно на сервер. Это дает вам коэффициент потери пакетов. Сервер должен следить за этим, и если потеря пакета увеличивается после начала передачи файла, начните снижать скорость передачи, пока потеря пакета не станет приемлемой. (Возможно, вам все равно придется сделать это для UDP, поскольку UDP не контролирует перегрузку.)
Обратите внимание, что, хотя я упоминал выше "сервер", это действительно может быть сделано либо в одном направлении, либо в обоих случаях. В зависимости от того, кто должен отправить что. Представьте себе игру с картами, созданными игроками, которые передают эти карты через одноранговые соединения.
Хотя понижение скорости передачи может быть столь же простым, как и менее частый вызов функции отправки, попытка управлять TCP таким образом, несомненно, будет конфликтовать с существующим контролем скорости передачи, который имеет TCP. Как предлагается в другом ответе, вы можете рассмотреть возможность поиска более всеобъемлющих способов управления TCP.
В данном конкретном случае я сомневаюсь, что это будет проблемой, если только вам действительно не нужно отправлять много UDP-информации , пока клиенты передают файлы.
Я ожидаю, что большинство игр покажет экран загрузки или лобби, когда это происходит. Ни один из них не должен требовать большого трафика UDP, если ваша игра не имеет собственного VOIP.
Вот отличная серия статей, в которых объясняются некоторые возможные варианты использования как TCP, так и UDP, особенно в контексте сетевых игр. TCP против UDP
В более поздней статье из этой серии он даже объясняет способ сделать UDP «почти» таким же надежным, как TCP (с примерами кода).
И как всегда ... и оцените свои результаты. У вас нет возможности узнать, ускоряет или замедляет ваш код соединение, если вы не измеряете.