2013-04-09 18 views
5

CảTrong Ruby, làm thế nào để bạn đảo ngược dns tra cứu tên máy của một máy tính zeroconf/bonjour?

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

cũng không

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

dường như nhận ra các host trên mạng con nội bộ mà sử dụng zeroconf/bonjour. Tôi cần phải tìm tên máy chủ của một máy tính zeroconf trên mạng con cục bộ cho địa chỉ IP của nó.

+0

có lẽ một cái gì đó như thế này: 'h_n = Socket.getaddrinfo ('10 .0.1.18' , nil)' có thể làm việc. Tên máy chủ phải được đặt tại: 'h_n [0] [2]' – fmendez

+0

Chỉ cần trả về '10 .0.1.18 'làm tên máy chủ ... [["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

Trả lời

1

Những chức năng nói TCP và DNS thường xuyên, tôi sẽ giả sử bạn cần phải sử dụng một API bonjour, chẳng hạn như http://dnssd.rubyforge.org/

+0

Không tìm ra cách để dnssd thực hiện tra cứu tên. Đã thử đá quý net-mdns, sử dụng Resolv :: MDNS.getname ('10 .0.1.18 '), có vẻ như nó sẽ hoạt động, trả về rằng nó không thể tìm thấy tên cho địa chỉ. BTW, tôi có thể ping địa chỉ ip, và tên địa phương 'fred.local' – Uilleann