作者热门文章
- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我知道我可以使用 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/
我是一名优秀的程序员,十分优秀!