2013-04-09 11 views
5

In Ruby, come si inverte dns per cercare il nome host di un computer zeroconf/bonjour?

Resolv.getname("fred.local") 
Resolv.getaddress("10.0.1.18") 

Socket.gethostbyaddr([10,0,1,18].pack("CCCC")) 

sembra riconoscere host della subnet locale che utilizzano zeroconf/Bonjour. Ho bisogno di trovare il nome host di un computer zeroconf sulla sottorete locale dato il suo indirizzo ip.

+0

Forse qualcosa di simile: 'H_n = Socket.getaddrinfo ('10 .0.1.18' , pari a zero)' potrebbe funzionare. Il nome host deve trovarsi a: 'h_n [0] [2]' – fmendez

+0

Restituisce semplicemente '10 .0.1.18 'come nome host ... [["AF_INET", 0, "10.0.1.18", "10.0.1.18", 2, 2, 17], ["AF_INET", 0, "10.0.1.18", "10.0.1.18", 2, 1, 6]] – Uilleann

risposta

1

Coloro funzione parlano TCP regolare e DNS, vorrei assumere è necessario utilizzare un'API bonjour, come ad esempio http://dnssd.rubyforge.org/

+0

Non ho capito come ottenere dnssd per eseguire la ricerca del nome. Ho provato la gemma net-mdns, usando Resolv :: MDNS.getname ('10 .0.1.18 '), che sembra funzionare correttamente, restituisce che non riesce a trovare un nome per l'indirizzo. A proposito, posso eseguire il ping dell'indirizzo ip e del nome locale 'fred.local' – Uilleann

Problemi correlati