Самый простой способ (на сегодняшний день) будет иметь по запросу клиентские фрагменты аудиофайла. std::net::TcpStream
(это то, что вы сказали, что используете) не имеет метода регулирования скорости передачи, поэтому у вас нет многих возможностей ограничить потоковую передачу, кроме использования жестко закодированных задержек потоков.
Например, ваш клиент может сохранить сегмент аудио, а когда пользователь, прослушивающий аудио, достигает определенной точки до конца сегмента (или пропускает его вперед), клиент отправляет запрос на сервер. получить соответствующий сегмент.
Это похоже на работу реальных потоковых сервисов (таких как Youtube), потому что, как вы сказали, было бы плохой идеей хранить весь файл на стороне клиента.