Работаете над устройством и хотели бы поддерживать функцию нулевой конфигурации. Таким образом, пользователи могут искать устройство в сети и просто дважды щелкнуть значок, чтобы получить доступ к веб-интерфейсу, без необходимости настраивать его или знать его IP-адрес.
Пытался использовать UPPNPLib_TLB, но кажется, что функции доступны только для чтения; я прав? Я могу создать устройство с помощью CoUPnPDevice.Create, но не могу установить FriendlyName или URL-адрес.
Пытался использовать службу Deltics Bonjour, но при создании произошел сбой (ACCESS_VIOLATION ). В демонстрационном коде используется специальный тестовый блок, что усложняет экспериментирование.
После долгих исследований не похоже, что для этого есть доступный компонент, и был бы признателен за некоторые указатели. Кто-нибудь успешно создал трансляцию zeroconf через UPnP или Bonjour с Delphi XE2/5. Я могу вернуться к Delphi 7, если потребуется. Цель = Windows 7.
ПРИМЕЧАНИЕ. Чтобы было ясно, я могу найти существующие устройства в сети и не хочу перечислять существующие устройства, но я хочу транслировать свою службу, чтобы мой ящик вел себя, например, как сетевой принтер. Единственная служба, которую мне нужно предоставить, — это URL-адрес, чтобы пользователи могли получить доступ к встроенному веб-серверу.
Цените помощь!
РЕДАКТИРОВАНИЕ С помощью предоставленных советов я провел некоторое исследование, и сделать это способом RAD невозможно.
Непосредственное использование MS API отнимает много времени и требует такого уровня понимания C, которого у меня нет. Перенос компонента Delphi 5/Indy 7 на XE2/5 потребует большого объема работы и отладки.
Я обнаружил инструменты разработчика UPnP от Intel, теперь с открытым исходным кодом, здесь: Инструменты разработчика для UPnP. Этот инструмент позволяет очень просто создать сервер в 10-15 строках кода. Intel предоставляет DLL, которую я могу вызвать из VS Express следующим образом, и она отлично работает:
device = UPnPDevice.CreateRootDevice();
device.FriendlyName = 'My name';
device.PresentationURL = 'URLToEmbeddedServer";
..
Я попытался использовать инструмент headconv7, чтобы преобразовать файл .h UPNP.DLL Intel в файл Pascal и вызвать внешние функции в DLL непосредственно из Delphi, но было слишком много проблем с преобразованием.
Это очень плохо, потому что библиотека Intel позволяет очень просто создавать стеки UPnP, и этот подход очень хорошо применим к компоненту, но на данный момент быстрее использовать .NET и VS Express для выполнения работы.