gitee.com/liuxuezhan/go-micro-v1.18.0@v1.0.0/network/resolver/dnssrv/dnssrv.go (about) 1 // Package dns srv resolves names to dns srv records 2 package dnssrv 3 4 import ( 5 "fmt" 6 "net" 7 8 "gitee.com/liuxuezhan/go-micro-v1.18.0/network/resolver" 9 ) 10 11 // Resolver is a DNS network resolve 12 type Resolver struct{} 13 14 // Resolve assumes ID is a domain name e.g micro.mu 15 func (r *Resolver) Resolve(name string) ([]*resolver.Record, error) { 16 _, addrs, err := net.LookupSRV("network", "udp", name) 17 if err != nil { 18 return nil, err 19 } 20 records := make([]*resolver.Record, len(addrs)) 21 for _, addr := range addrs { 22 address := addr.Target 23 if addr.Port > 0 { 24 address = fmt.Sprintf("%s:%d", addr.Target, addr.Port) 25 } 26 records = append(records, &resolver.Record{ 27 Address: address, 28 }) 29 } 30 return records, nil 31 }