Модераторы: Snowy, Poseidon, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> UPnP и SSDP, Работающие примеры. 
V
    Опции темы
PriZraK
Дата 20.1.2010, 22:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 65
Регистрация: 22.10.2006

Репутация: нет
Всего: нет



Здравствуйте.
Замучался искать по теме протокола обнаружения сервисов (англ. Simple Service Discovery Protocol, SSDP), по этому, когда нашёл, то решил выложить готовые примеры в публичный доступ.
О протоколе в википедии:
Цитата
SSDP описывает механизм, согласно которому сетевые клиенты могут обнаружить различные сетевые сервисы. Клиенты используют SSDP без предварительной конфигурации. SSDP поддерживает обнаружение при помощи мультикаста, уведомления от серверов, и маршрутизацию. Данная служба включает обнаружение UPnP-устройств в домашней сети. 

SSDP использует XML UDP пакеты как в одноадресной так и в многоадресной рассылке для объявлений о сервисах. Используется мультикаст адрес 239.255.255.250.


Те кто будут искать по данной теме наткнутся на Delphi Pascal UPnP компонент  (http://www.whitebear.ch/upnp.htm). Мне заставить его работать так и не удалось. 
Даже скомпилированный EXE'шник идущий в примере при запуске выдавал ошибку (Windows 7 x64), не говоря уж о компоненте, которые написаны под Delphi 7.

На форуме sql.ru (http://www.sql.ru/forum/actualthread.aspx?tid=635125) был найден первый рабочий вариант кода:
Код

program Project1;

{$APPTYPE CONSOLE}

uses
  SysUtils, ActiveX, ComObj,
  upnplib_tlb;

const
  RootDevice = 'upnp:rootdevice';
  InternetGatewayDevice = 'urn:schemas-upnp-org:device:InternetGatewayDevice:1';

var
  IFinder : IUPnPDeviceFinder;
  IDevices : IUPnPDevices;
  IDevice : IUPnPDevice;
  IEnum : IEnumVariant;
  ObjEnum : OleVariant;
  Fetched : Cardinal;

begin
  ComObj.CoInitializeEx( nil, 0 );
  IFinder := CoUPnPDeviceFinder.Create;
//  IDevices := IFinder.FindByType( RootDevice, 0 );
  IDevices := IFinder.FindByType( InternetGatewayDevice, 0 );
  if Assigned( IDevices ) then
    IEnum := IDevices._NewEnum as IEnumVariant;
  if Assigned( IEnum ) then
  while IEnum.Next( 1, ObjEnum, Fetched ) = S_OK do
  with IUnknown( ObjEnum ) as IUPnPDevice do
  begin
    WriteLn( FriendlyName );
    WriteLn( PresentationURL );
  end;
  ReadLn;
end.


Который успешно выполняется, но работает медленно. 
После дальнейших продолжительных поисков найдена тема на delphigroups.info (http://www.delphigroups.info/2/8/937435.html). Исходный код программы вставлен прямо в тело сообщения и выглядит, мягко говоря, непонятно. Разобравшись с ним удалось запустить и получить интересующую меня информацию об оборудовании в сети. Работает весьма неплохо.

Файлы для скачивания:
PM MAIL ICQ Skype GTalk   Вверх
VolkovVD
Дата 26.10.2010, 17:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 26.10.2010

Репутация: нет
Всего: нет



Здравствуйте.

Файлы не существуют :(

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Сети"
Snowy
Poseidon
MetalFan

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Snowy, Poseidon, MetalFan.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.0387 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.