Ну
Сначала необходимо решить, используете ли вы одноранговую архитектуру или архитектуру на основе сервера.
Если ваше приложение очень простое, вы знаете, что IP-адрес другой стороны и получатель находятся в той же подсети, что вы можете использовать P2P напрямую. В противном случае это простой в использовании механизм, основанный на централизованном сервере.
Вы все еще можете использовать P2P (как в скайпе, но это сложнее)
Тогда вы можете подумать о вашем сервере и клиентских приложениях. Сервер должен прослушивать клиентов (да, это открытый порт), принимать запросы от клиентов и регистрировать их. Это «Человек посередине», и он должен направлять пакеты в правильное место назначения.
Клиент отвечает за подключение к серверу (Аутентификация ???), отправку ему информации о получателе и начало отправки голосовых данных.