1

我正在为 python 使用 WSDiscovery 模块。我已经能够在我的网络上搜索服务。我正在尝试发现一个客户端并从中获取 XAddress。WSDiscovery 模块的文档很少,实际上只有很少的部分在模块的自述文件中,它有几行长。我已经设法让这个特定的代码在下面工作:

import WSDiscovery
from WSDiscovery import WSDiscovery

def printService():
    wsd = WSDiscovery()
    wsd.start()
    services = wsd.searchServices()
    for service in services:
        try:
            print service.getEPR() + ":" + str(service.getXAddrs())
            print service.getTypes()
        except:
            print "Error with "+service.getEPR()

    wsd.stop()

这得到了所有服务,我可以使用以下方法获得不同的 XAddress:

service.getXAddrs()[0]

但我正在寻找一个特别具有特定ID的人。地址之一将显示为:

4yr8343-r48d-3ref-4fsw-5r4tw432:[u'http://10.10.10.10:5321']

例如,任何人都可以想到选择具有此 ID 号的地址的建议。

谢谢

4

1 回答 1

1

查看来源,您可以看到

1. searchServices 签名有几个参数:

def searchServices(self, types=None, scopes=None, timeout=3)

而且我认为按类型\范围过滤没有用,不是吗?

2. service CLASS 有这些参数:

class Service:

def __init__(self, types, scopes, xAddrs, epr, instanceId):
    self.__types = types
    self.__scopes = scopes
    self.__xAddrs = xAddrs
    self.__epr = epr
    self.__instanceId = instanceId
    self.__messageNumber = 0
    self.__metadataVersion = 1

就我所见,您唯一能做的就是遍历由 searchServices 检索到的服务并按可用属性之一进行过滤。

于 2010-03-31T14:36:15.897 回答