gpt4 book ai didi

delphi - 可以用Delphi XE5创建zeroconf服务吗?

转载 作者:行者123 更新时间:2023-12-03 15:34:59 25 4
gpt4 key购买 nike

正在使用设备并希望支持零配置功能。这样用户就可以在网络上查找设备,只需双击图标即可访问 Web 界面,而无需配置它或知道其 IP 地址。

尝试使用UPNPLib_TLB,但函数似乎是只读的;我对吗?我可以使用 CoUPnPDevice.Create 创 build 备,但无法设置FriendlyName 或URL。

尝试使用Deltics Bonjour service但它在创建时崩溃(ACCESS_VIOLATION)。演示代码使用自定义测试单元,这使实验变得复杂。

经过大量研究,似乎没有可用的组件,并且希望得到一些指示。有没有人通过 UPnP 或 Bonjour 使用 Delphi XE2/5 成功创建了 Zeroconf 广播。如果需要,我可以返回 Delphi 7。目标 = Windows 7。

注意:需要明确的是,我可以找到网络上的现有设备,并且不想枚举现有设备,但我想要的是广播我的服务,以便我的盒子表现得像网络打印机一样。我需要公开的唯一服务是 URL,以便用户可以访问嵌入式 Web 服务器。

感谢您的帮助!

编辑根据提供的提示,我做了一些研究,但通过 RAD 方式完成这项工作是不可能的。

直接使用 MS API 非常耗时,并且需要对 C 语言有一定程度的了解,而我却没有。将 Delphi 5/Indy 7 组件移植到 XE2/5 需要大量的工作和调试。

我发现英特尔的 UPnP 开发人员工具现已开源:Developer Tools for UPnP 。使用此工具,只需 10-15 行代码即可轻松创建服务器。 Intel 提供了一个 DLL,我可以从 VS Express 调用它,如下所示,它运行得很好:

device = UPnPDevice.CreateRootDevice();
device.FriendlyName = 'My name';
device.PresentationURL = 'URLToEmbeddedServer";

..

我尝试使用headconv7工具将Intel的UPNP.DLL的.h文件转换为pascal文件,并直接从Delphi调用DLL中的外部函数,但转换时出现太多问题。

这太糟糕了,因为英特尔库使创建 UPnP 堆栈变得非常简单,并且该方法本身可以很好地应用于组件,但目前使用 .NET 和 VS Express 来完成工作会更快。

最佳答案

使用 UPNPLib_TLB 时,不应直接创建 UPnPDevice 对象。 UPnpDevice 描述网络上的已知设备,这就是其属性是只读的原因。

阅读文档:

Control Point API

Finding Devices

您应该创建 UPnPDeviceFinder 类的实例。它的搜索方法将为您找到的每个设备提供一个 UPnDevice 对象。

关于delphi - 可以用Delphi XE5创建zeroconf服务吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23160546/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com