gpt4 book ai didi

go - 检查主机是否可以在特定网络接口(interface)上访问

转载 作者:IT王子 更新时间:2023-10-29 01:50:51 29 4
gpt4 key购买 nike

我知道我可以使用 net.DialTimeout 来检查主机是否可达。但据我所知,使用这种方法我无法指定接口(interface)或取回到达主机的接口(interface)。

我正在寻找 ping 的功能 -I 标记,例如

ping -I eth0 www.google.se

但不希望使用 exec.Command 来保持平台兼容性。

最佳答案

您可以使用提到的interfaceByName 方法here .示例:

func main() {
eth0, err := net.InterfaceByName("eth0")
if err != nil {
fmt.Println(err)
}

adds, err := eth0.Addrs()
if err != nil {
fmt.Println(err)
}

tcpAddr := &net.TCPAddr{
IP: adds[0].(*net.IPNet).IP,
}

d := net.Dialer{LocalAddr: tcpAddr, Timeout: time.Second * 60}

_, err = d.Dial("tcp", "www.google.se")

if err != nil {
fmt.Println(err)
}
}

关于go - 检查主机是否可以在特定网络接口(interface)上访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47235079/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com