2017-11-11 167 views
1

我知道我可以使用net.DialTimeout来检查主机是否可访问。但是,使用这种方法,我不能指定接口或拿回接口与主机达成的,据我所知检查主机是否可以在特定的网络接口上访问

我期待坪-I标志的功能,如

平 - 我的eth0 www.google.se

,但宁愿不诉诸exec.Command保持平台的兼容性

回答

6

您可以使用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) 
    } 
} 
相关问题