github.com/keysonZZZ/kmg@v0.0.0-20151121023212-05317bfd7d39/kmgNet/kmgProxy/ParseUnsolvedAddr.go (about) 1 package kmgProxy 2 3 import ( 4 "net" 5 "strconv" 6 ) 7 8 //没有解析过的地址,可能有ip,有域名,也可能有端口号 9 type UnsolvedAddr struct { 10 Ip net.IP 11 Domain string 12 Port uint16 13 } 14 15 func (uaddr UnsolvedAddr) String() string { 16 if uaddr.Ip != nil { 17 return net.JoinHostPort(uaddr.Ip.String(), strconv.Itoa(int(uaddr.Port))) 18 } else { 19 return net.JoinHostPort(uaddr.Domain, strconv.Itoa(int(uaddr.Port))) 20 } 21 } 22 23 func ParseUnsolvedAddr(addr string) (uaddr UnsolvedAddr, err error) { 24 host, port, err := net.SplitHostPort(addr) 25 if err != nil { 26 return 27 } 28 iport, err := strconv.Atoi(port) 29 if err != nil { 30 return 31 } 32 uaddr.Port = uint16(iport) 33 uaddr.Ip = net.ParseIP(host) 34 if uaddr.Ip == nil { 35 uaddr.Domain = host 36 return uaddr, nil 37 } 38 return uaddr, nil 39 }