Учебный проект по технологии VoIP (Voice over IP).
Решение состоит из четырёх проектов:
- VoIPClient — консольное приложение, которое захватывает звук с микрофона, упаковывает в RTP-пакеты (RFC 3550) и отправляет по UDP на заданный адрес, а также принимает входящие RTP-пакеты и воспроизводит их через динамики. Использует библиотеку NAudio для работы с аудио.
- RtpLib — библиотека для работы с RTP: структура заголовка (12 байт) и генератор последовательных RTP-пакетов с автоматическим увеличением Sequence Number и Timestamp.
- SipParser — парсер SIP-сообщений и SDP-тел (RFC 3261, RFC 8866). Разбирает запросы (REGISTER, INVITE и т.д.) и ответы (200 OK, 486 Busy Here) с опциональным SDP-блоком.
- UnitTests — NUnit-тесты для RtpLib и SipParser.
Для работы нужно два экземпляра клиента (на разных компьютерах или на одном), так как каждый экземпляр одновременно отправляет и принимает аудио.
VoIPClient [прослушиваемый_порт] [удалённый_порт]
прослушиваемый_порт— порт, на котором клиент слушает входящие RTP-пакеты (по умолчанию 5001)удалённый_порт— порт, на который клиент отправляет RTP-пакеты (по умолчанию 5000)- Удалённый IP-адрес всегда
127.0.0.1(локальный).
Терминал 1:
VoIPClient 5000 5001
Слушает порт 5000, отправляет на порт 5001.
Терминал 2:
VoIPClient 5001 5000
Слушает порт 5001, отправляет на порт 5000.
После запуска клиент начинает запись с микрофона и воспроизведение поступающего аудио. Для остановки нажмите Enter.
Важно: Клиент использует некодированный PCM-звук (8 кГц, 16 бит, моно). Для работы по сети между разными машинами потребуется изменить IP-адрес и убедиться, что UDP-порты открыты в файерволе. Сигнализация (SIP) в клиенте не реализована — это прямое RTP-соединение.