Просмотр устройств и сервисов

Пример демонстрирует как получить информацию обо всех устройствах и сервисах. В нем мы запускаем бесконечный цикл (используя CLI) и, если будут найдены устройства или сервисы, будем вызывать callback-функцию.

Пример #1 Поиск всех устройств и сервисов UPnP.

<?php

/* Callback-функция для устройств */
function device_proxy_available_cb($proxy$arg)
{
    
$info gupnp_device_info_get($proxy);

    
$type $info['device_type'];
    
$location $info['location'];

    
printf("Устройство доступно:\n");
    
printf("\tтип:     %s\n"$type);
    
printf("\tместоположение: %s\n"$location);
}

/* Callback-функция для  сервисов */
function service_proxy_available_cb($proxy$arg)
{
    
$info gupnp_service_info_get($proxy);

    
$type $info['service_type'];
    
$location $info['location'];

    
printf("Сервис доступен:\n");
    
printf("\tтип:     %s\n"$type);
    
printf("\tместоположение: %s\n"$location);
}

/* Создаем контекст UPnP */
$context gupnp_context_new();
if (!
$context) {
    
printf("Ошибка создания контекста GUPnP\n");
    exit(-
1);
}

/* Нам интересно ВСЁ!!! */
$cp gupnp_control_point_new($context"ssdp:all");

/* Устанавливаем callback-функции */
gupnp_control_point_callback_set($cp
    
GUPNP_SIGNAL_DEVICE_PROXY_AVAILABLE'device_proxy_available_cb');
gupnp_control_point_callback_set($cp
    
GUPNP_SIGNAL_SERVICE_PROXY_AVAILABLE'service_proxy_available_cb');

/* Запускаем поиск (бесконечный цикл, нажмите Ctrl-C для выхода) */
gupnp_control_point_browse_start($cp);

?>