你应该在哪里获得嵌入式设备的基本URL?

时间:2014-11-06 20:16:59

标签: c# xml upnp base-url

在UPnP中,你有一个Root设备,它有一个.xml文件,描述了自己和他的各种嵌入式设备。

在该文件中,没有BaseURL。我从我的M-Search的'OK'响应中的'Host:'字段中获取BaseURL。我使用该BaseURL获取根设备及其嵌入式设备的描述。

但是,我在找出为嵌入式设备获取正确BaseURL的正确方法时遇到了问题。

假设我有一个父(root)设备,其中包含2个嵌入式设备(Fred)和(Bob)。

Parent BaseURL: 192.168.1.10:1960   UUID: MOMMY_10
  Fred BaseURL: 192.168.1.10:1961   UUID: FRED_10
  Bob  BaseURL: 192.168.1.10:1962   UUID: BOB_10

Parent有一个名为'Banker'的服务,其服务定义于:

<SCPDURL>_urn-company-com-serviceId-Banker_scpd.xml</SCPDURL>

Fred有一个名为'MoneyUser'的服务,其中有一个SCPDURL定义于:

<SCPDURL>FRED_10/_urn-company-com-serviceId-MoneyUser_scpd.xml</SCPDURL>

鲍勃还有一个名为'MoneyUser'的服务,其中定义了一个SCPDURL:

<SCPDURL>BOB_10/_urn-company-com-serviceId-MoneyUser_scpd.xml</SCPDURL>

如果我想让scpd.xml文件查看Fred和Bob的服务详细信息,我需要分别使用BaseURL替换Fred或Bob的SCPUURL中的UUID(FRED_10)或(BOB_10)。但是,我遇到了麻烦,因为他们的BaseURL与他们的父母的BaseURL不同。它不在描述文件中。

我唯一能找到它的地方是服务通知Notify并拥有其UUID及其Host:值。我可以等到收到这些通知,然后能够将服务连接到给定UUID的相应BaseURL。

它应该是这么复杂,还是有一种更简单的方法可以做到这一点,我还没想过呢?

此外,值是正确的,还是应该是可直接访问的绝对URL?是否应该用下面的行替换以下内容?

<SCPDURL>BOB_10/_urn-company-com-serviceId-MoneyUser_scpd.xml</SCPDURL>
<SCPDURL>192.168.1.10:1962/_urn-company-com-serviceId-MoneyUser_scpd.xml</SCPDURL>

我正在与之交谈的UPnP设备是使用英特尔UPnP库生成的。我不确定SCPDURL是否正确实施,或者我是否应该通过箍来获得正确的BaseURL以供SCPDURL使用。

非常感谢有关此主题的任何意见和帮助!!

现在,我只是在收到来自相应UUID的通知后才获取scpd.xml,该UUID具有Host:值,可用于该嵌入式设备的BaseURL。

谢谢, 柯蒂斯

0 个答案:

没有答案