2010-03-31 21 views
1

J'utilise le module WSDiscovery pour python. J'ai pu rechercher des services sur mon réseau. J'essaye de découvrir un client et obtenir le XAddress de ceci. Le module WSDiscovery a très peu de documentation, en fait si peu le seul morceau est dans le fichier readme du module qui est de quelques lignes. Je manged pour obtenir ce code de travail spécifique ci-dessous:Récupère une chaîne spécifique d'une liste de services en utilisant 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() 

Ce de obtenir tous les services et je peux obtenir différents XAddresses en utilisant:

service.getXAddrs()[0] 

Mais je suis à la recherche d'un en particulier avec un identifiant spécifique. L'une des adresses viendrait comme:

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

Quelqu'un peut-il penser à une suggestion de sélectionner l'adresse avec ce numéro d'identification par exemple.

Merci

Répondre

1

regardant sources vous pouvez voir que

1. signature de searchServices a quelques paramètres:

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

et je ne pense pas que le filtrage par types \ champs peuvent être utiles n'est-ce pas?

2. Classe de service a ces paramètres:

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 

Pour ce que je vois, la seule chose que vous pouvez faire est itérer sur les services récupérés par searchServices et filtre par l'un des attributs disponibles.

+0

@systempuntoout - Oui, c'est comme ça. Je suppose que je pourrais regarder à travers chaque service dans la boucle for et faire correspondre par chaîne. Pouvez-vous penser à un autre moyen en dehors de la boucle for? – chrissygormley

+0

@chrissygormley Je ne peux pas :). En regardant le code source, l'appariement par chaîne semble être le seul chemin disponible. – systempuntoout