Получение списка клиентов (активных клиентов) для демона многоадресной рассылки в C / C ++ (либо Gstreamer API, либо сокеты C)

ОС: LINUX (как Redhat Enterprise, так и Ubuntu LTS)

В настоящее время я работаю с Gstreamer Pipeline для многоадресной передачи видеоданных различным клиентам. Мой конвейер выглядит следующим образом. rtspsrc location=rtsp://<ip>:<port>/<location>.sdp latency=0 ! udpsink host=225.1.1.1 auto-multicast=true port=5678 sync=false async=false , Как можно видеть, у меня есть многоадресная группа 225.1.1.1 и порт 5678. Учитывая эту информацию, можно ли получить список текущих подключенных / активных клиентов (IP-адреса и другие атрибуты), если таковые имеются, через (1) Gstreamer API (2) Berkeley Unix Sockets в C / C ++?

Думайте об этом как о мини-инструменте сниффинга (не так сложном, как tshark, ngrep, pcap и т. Д.). Я мог бы использовать комбинацию скриптов bash / Python и tshark с некоторыми фильтрами. Но я предпочитаю код на C ++, если это возможно (без полномочий root было бы здорово!).

1

Решение

В типичном RTSP Потоковый сценарий, клиент будет вызывать SETUP команда до PLAY в котором тип данных и клиентские порты доступны. SETUP обычно вызывается после DESCRIBE Ответ получен, т. е. клиент знает свойства источника и приступает к настройке соединения. Таким образом, SETUP может быть хорошим местом, чтобы узнать больше о клиентах.

0

Другие решения

API / протокол GStreamer Pipeline может предоставить способ: UDP многоадресная рассылка сама по себе этого не делает. Все, что вы можете знать, это то, есть ли какие-либо клиенты или нет, и вы должны написать некоторый необработанный код сокетов для этого (протокол IGMP).

0

По вопросам рекламы [email protected]