如何从golang应用程序ping IP地址?最终目标是检查服务器是否在线。
有没有办法在标准库中实现网络ping?
正如@desaipath所提到的,在标准库中无法做到这一点。但是,您不需要为自己编写代码 - 它已经完成:
注意,发送ICMP数据包需要root权限
我需要和你一样的东西,我已经为我的Raspberry Pi做了一个解决方法(使用exec.Command
)来检查服务器是否在线。这是实验代码
out, _ := exec.Command("ping", "192.168.0.111", "-c 5", "-i 3", "-w 10").Output()
if strings.Contains(string(out), "Destination Host Unreachable") {
fmt.Println("TANGO DOWN")
} else {
fmt.Println("IT'S ALIVEEE")
}
没有。
Go没有任何内置方法来ping标准库中的服务器。你需要自己编写代码。
为此,你可以看看icmp section of golang library。并使用this list of control messages,正确构造icmp消息。
但是,请记住,出于安全原因,某些服务器管理员会关闭其服务器上的ping服务。因此,如果您的目标是最终检查服务器是否在线,这不是100%可靠的方法。