golang域名解析为ip

// ParseUrlToIp url解析为ip
func ParseUrlToIp(url string) string {
    
    
	_, domain, _, _, _, err := ParseUrl(url)
	if err != nil {
    
    
		log.Println("解析解析url异常: ", err)
		return ""
	}
	ip := ResolveDomain(domain)
	return ip
}

// ParseUrl 创建任务--解析url
func ParseUrl(targetUrl string) (string, string, string, string, string, error) {
    
    
	if !strings.HasPrefix(targetUrl, "http") {
    
    
		targetUrl = "http" + "://" + targetUrl
	}
	urlPtr, err := url.Parse(targetUrl)
	if err != nil {
    
    
		return "", "", "", "", "", err
	}
	scheme := urlPtr.Scheme
	hostname := urlPtr.Hostname()
	port := urlPtr.Port()
	path := urlPtr.Path
	query := urlPtr.RawQuery

	if port == "" {
    
    
		if scheme == "http" {
    
    
			port = "80"
		} else {
    
    
			port = "443"
		}
	}

	return scheme, hostname, port, path, query, nil
}

// ResolveDomain 解析域名为ip
func ResolveDomain(name string) string {
    
    
	addr, err := net.ResolveIPAddr("ip", name)
	if err != nil {
    
    
		fmt.Println("Resolution error", err.Error())
		return ""
	}
	fmt.Println("Resolved address is ", addr.String())
	return addr.String()
}

猜你喜欢

转载自blog.csdn.net/SweetHeartHuaZai/article/details/130244391
今日推荐