2010-03-31 74 views
1

我正在使用WSDiscovery模塊進行python。我已經能夠在我的網絡上搜索服務。我正試圖發現一個客戶端,並從中獲取XAddress。 WSDiscovery模塊的文檔非常少,實際上只有少數幾行文檔中的唯一內容。我已經manged得到這個特定的代碼如下工作:使用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() 

此獲得的所有服務,我可以用得到不同x-地址:

service.getXAddrs()[0] 

但是我正在尋找一個特別的特定ID。其中一個地址將如下:

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

任何人都可以想到一個建議,選擇與此id號地址爲例。

感謝

回答

1

看着sources你可以看到,

1. searchServices簽名有幾個參數:

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

,我不認爲通過類型過濾\範圍可能是有用的不是嗎?

2. 服務類有這些參數:

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和過濾檢索服務。

+0

@systempuntoout - 是的,它看起來就是這樣。我想我可以查看for循環中的每個服務並按字符串進行匹配。除了for循環之外,你能想到其他任何方式嗎? – chrissygormley 2010-03-31 15:07:30

+0

@chrissygormley我不能:)。查看源代碼,通過字符串進行匹配似乎是唯一可用的路徑。 – systempuntoout 2010-03-31 15:10:22