import javax.jmdns as zeroconf import java.lang as lang # # This code shows how to use the JmDNS package from Jython # # First, we create a class that extends the ServiceListener interface class JMDNSExample(zeroconf.ServiceListener): def __init__(self): # Create a JmDNS instance self.jmdns = zeroconf.JmDNS() # # The methods below (defined by ServiceListener) get called whenever a # service is added, removed, or resolved. # def serviceAdded(self, event): print "ADD: " + event.name + " (" + event.type + "): " + str(event.info) # We may not know the info necessary for contacting the service yet. If # Not, we need to resolve it... the service info will come back later # through the serviceResolved method if event.info == None: print "Resolving service info..." self.jmdns.requestServiceInfo(event.type, event.name, 10000) print "Issued resolve request." def serviceRemoved(self, event): print "REMOVE: " + event.name def serviceResolved(self, event): print "RESOLVED: " + event.name + " (" + event.type + "): " + str(event.info) # Call this to register your service def register(self, name, port, description): # Construct a service info with the necessary details: protocol, name, # what port your service is running on, and a short text description info = zeroconf.ServiceInfo("_cs6452._tcp.local.", name + "._cs6452._tcp.local.", port, description) # Unregister it, just in case it was previously registered #self.unregister(info) # Now register it through JmDNS self.jmdns.registerService(info) print "Registered service: " + str(info) # Call to unregister a previously registered service def unregister(self, info): self.jmdns.unregisterService(info) print "Unregistered old service" # Call to start listening for service announcements def listen(self): # set ourselves up as the listener for the "_cs6452" protocol self.jmdns.addServiceListener("_cs6452._tcp.local.", self) print "Listening for service announcements..." if __name__ == "__main__": myName = lang.System.getProperty("user.name") port = 1234 e = JMDNSExample() e.listen() e.register(myName, port, "This is my service") e.register(myName, port+1, "This is another service")