Я думаю, что единственный способ реализовать это - это сложный путь ... путем измерения количества данных, которые были отправлены / получены по каждому сокету за последние (так много) секунд, и удержания при отправке / получении более данные, пока не прошло достаточно времени, чтобы ограничить общую среднюю пропускную способность тем, что вы хотите. Я реализовал эту логику, используя неблокирующие сокеты и select (), и это выполнимо (хотя и непросто).