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

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

Пример #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("Device available:\n");
    
printf("\ttype:     %s\n"$type);
    
printf("\tlocation: %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("Service available:\n");
    
printf("\ttype:     %s\n"$type);
    
printf("\tlocation: %s\n"$location);
}

/* Создаем контекст UPnP */
$context gupnp_context_new();
if (!
$context) {
    
printf("Error creating the GUPnP context\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);

?>