可以用Delphi XE5创建一个zeroconf服务吗?
在设备上工作并希望支持零配置功能.这样,用户可以在网络上查找设备,只需双击图标即可访问Web界面,而无需配置或知道其IP地址.
试图使用UPNPLib_TLB,但函数似乎是只读的;我对吗?我可以使用CoUPnPDevice.Create创建设备,但不能设置FriendlyName或URL. 试图使用Deltics Bonjour service但它在创建时崩溃(ACCESS_VIOLATION).演示代码使用自定义测试单元,这使实验变得复杂. 经过大量研究后,看起来并没有可用的组件,并且会欣赏一些指示.有没有人通过UPnP或Bonjour用Delphi XE2 / 5成功创建了zeroconf广播.如果需要,我可以回到Delphi 7.目标= Windows 7. 注意:要清楚,我可以在网络上找到现有设备,并且不想枚举现有设备,但我想要的是广播我的服务,以便我的盒子就像网络打印机一样.我需要公开的唯一服务是URL,以便用户可以访问嵌入式Web服务器. 感谢帮助! 编辑 直接使用MS API非常耗时,并且需要对C语言有一定程度的理解.将Delphi 5 / Indy 7组件移植到XE2 / 5将需要大量的工作和调试. 我发现英特尔的UPnP开发人员工具现在在这里开源:Developer Tools for UPnP.这个工具非常简单地用10-15行代码创建一个服务器.英特尔提供了一个我可以从VS Express调用的DLL,如下所示,它运行良好: device = UPnPDevice.CreateRootDevice(); device.FriendlyName = 'My name'; device.PresentationURL = 'URLToEmbeddedServer"; .. 我尝试使用headconv7工具将.h文件Intel的UPNP.DLL转换为pascal文件,并直接从Delphi调用DLL中的外部函数,但转换有太多问题. 这太糟糕了,因为英特尔库使创建UPnP堆栈变得非常简单,并且该方法非常适用于组件,但现在它更快地使用.NET和VS Express来完成工作. 解决方法
使用UPNPLib_TLB时,不应该直接创建UPnPDevice对象. UPnpDevice描述了网络上的已知设备,这就是它的属性是只读的原因.
阅读文档: Control Point API Finding Devices 您应该创建UPnPDeviceFinder类的实例.它的搜索方法将为找到的每个设备提供一个UPnDevice对象. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |