golang と multicast udp で irkit を探す

soh335/go-mdns · GitHub というのを昨日書きました。

client := new(mdns.Client)
client.Discover("_irkit._tcp.local.", func(msg *dns.Msg) {
        for _, rr := range msg.Extra {
                switch rr := rr.(type) {
                case *dns.A:
                        fmt.Println(rr.Header().Name, "=>", rr.A)
                default:
                }
        }
})

こういう感じで実行すると

irKitD2A6.local. => 10.0.1.15

こういう感じになります。

github.com/miekg/dns を使って dns message の parse をする場合にに txt record の txt の中が空だと失敗する場合があったので修正の p-r を取り込んでもらいました。なので、既にこちらが入ってる場合は最新版に update しないと動かない場合があります( irkit がそうだった)

合わせて読みたい

go-dnssd で irkit を探す - @soh335 memo