猿问

如何检查我是否可以绑定到 IP 地址?

我有一个 IP 地址,想检查是否可以从它向 Internet 发送请求。我想检查 IPv4 地址和 IPv6 地址。


该检查应适用于任何 IP 地址(本地、公共、docker's、lo 等)。


换个角度,想看看能不能绑定地址。例如,我在我的机器上设置了无法绑定的 IP(通过测试curl --interface),并希望从我的可用地址中过滤这些 IP。


用法:用户输入一个 IP 地址来发送(http get)请求,我想检查 IP 是否有效/可用。


编辑尝试绑定并查看是否可以:我已经尝试过:


tcpAddr, _ := net.ResolveTCPAddr("tcp", ipString)

client := &http.Client{

    Transport: &http.Transport{

        DialContext: (&net.Dialer{

            Timeout:   10 * time.Second,

            LocalAddr: tcpAddr,

        }).DialContext,

    },

}


_, err = client.Get("http://www.google.com/")

if err != nil {

    fmt.Println("Unusable")

} else {

    fmt.Println("Usable")

}

它将所有可用地址(甚至环回)显示为可用(甚至检查响应主体;所有都是有效的)。其中许多不能通过curl --interface.


慕斯709654
浏览 124回答 1
1回答

忽然笑

尝试绑定它,看看是否有错误:l,err := net.Listen("tcp", address)if err != nil {    // address is not bindable} else {    l.Close()}
随时随地看视频慕课网APP

相关分类

Go
我要回答