我有一个 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.
1 回答
忽然笑
TA贡献1806条经验 获得超5个赞
尝试绑定它,看看是否有错误:
l,err := net.Listen("tcp", address)
if err != nil {
// address is not bindable
} else {
l.Close()
}
- 1 回答
- 0 关注
- 123 浏览
添加回答
举报
0/150
提交
取消