2017-11-11 146 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) 
    } 
} 
相關問題