检查特定网络接口上是否可以访问主机

Joh*_*han 1 go

我知道我可以使用net.DialTimeout来检查主机是否可以访问.但据我所知,使用这种方法我无法指定接口或取回主机所接触的接口

我正在寻找ping的功能-I flag,就像

ping -I eth0 www.google.se

但是我宁愿不依靠exec.Command来保持平台的兼容性

Apo*_*eus 6

您可以使用此处interfaceByName提到的方法.我只是快速放入示例代码

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)
    }
}
Run Code Online (Sandbox Code Playgroud)