def main(ip=None): print "Multicast DNS Service Discovery for Python, version", __version__ # It MUST be 0.0.0.0. NOT the local IP address or 127.0.0.1. # Otherwise, at least in GNU/Linux, it doesn't get the service # info of services registered in other processes (e.g. "coolserver") r = Zeroconf("0.0.0.0") host_ip = socket.gethostbyname(socket.gethostname()) try: print "1. Testing registration of a service..." desc = {'version': '0.10', 'a': 'test value', 'b': 'another value'} info = ServiceInfo("_http._tcp.local.", "My Service Name._http._tcp.local.", socket.inet_aton(host_ip), 1234, 0, 0, desc) print " Registering service..." r.registerService(info) print " Registration done." print "2. Testing query of service information..." service_info = r.getServiceInfo("_http._tcp.local.", "coolserver._http._tcp.local.") print " Getting 'coolserver' service: %r" % service_info if service_info is None: print " (Did you expect to see here the details of the 'coolserver' service? Try running 'nameprobe.py' before!)" print " Query done." print "3. Testing query of own service..." my_service = r.getServiceInfo("_http._tcp.local.", "My Service Name._http._tcp.local.") print " Getting self:", str(my_service) print " Query done." raw_input('Press <enter> to release name > ') print "4. Testing unregister of service information..." r.unregisterService(info) print " Unregister done." finally: r.close()
def main( base_name='coolserver.local.', stype="_http._tcp.local."): # http://serverfault.com/questions/78048/whats-the-difference-between-ip-address-0-0-0-0-and-127-0-0-1 z = Zeroconf( "0.0.0.0" ) # 0.0.0.0 represents all IP addresses on the local machine try: name = '%s.%s'%( base_name.split('.')[0], stype ) s = ServiceInfo( stype, name, server = base_name, address = socket.inet_aton('127.0.0.1'), port = 8080, properties = {"hello":"world", "dept":"deustotech"}, # Setting DNS TXT records... ) z.registerService( s ) name = z.probeName( base_name ) z.unregisterService( s ) print 'Negotiated name:', name s.server = name z.checkService( s ) z.registerService( s ) raw_input( 'Press <enter> to release name > ' ) finally: z.close()