2010-03-31 2 views
1

파이썬 용 WSDiscovery 모듈을 사용하고 있습니다. 내 네트워크에서 서비스를 검색 할 수있었습니다. 클라이언트를 발견하고 XAddress를 얻으려고합니다. WSDiscovery 모듈에는 문서가 거의 없습니다. 모듈의 readme 파일에는 길이가 몇 줄 밖에 없습니다.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() 

이의 모든 서비스를받을 내가 사용하는 다른 XAddresses를 얻을 수 있습니다 : 나는 아래 작업이 특정 코드를 얻기 위해 manged했던 한

service.getXAddrs()[0] 

하지만 특정 ID로 특히 하나 찾고 있습니다.

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

사람이 예를 들어,이 ID 번호와 주소를 선택하기 위해 제안 생각할 수 : 주소의 하나로서 올 것입니다.

감사 sources 보면 당신은

1. searchServices 서명이 몇 가지 매개 변수가 있음을 볼 수 있었다

답변

1

:

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

+0

@chrissygormley 나는 할 수 없다. :). 소스 코드를 살펴보면 문자열로 매칭하는 것이 유일한 경로로 보인다. – systempuntoout

관련 문제