如何在golang中ping IP地址

问题描述 投票:12回答:3

如何从golang应用程序ping IP地址?最终目标是检查服务器是否在线。

有没有办法在标准库中实现网络ping?

go
3个回答
14
投票

正如@desaipath所提到的,在标准库中无法做到这一点。但是,您不需要为自己编写代码 - 它已经完成:

https://github.com/tatsushid/go-fastping

注意,发送ICMP数据包需要root权限


5
投票

我需要和你一样的东西,我已经为我的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")
}

4
投票

没有。

Go没有任何内置方法来ping标准库中的服务器。你需要自己编写代码。

为此,你可以看看icmp section of golang library。并使用this list of control messages,正确构造icmp消息。

但是,请记住,出于安全原因,某些服务器管理员会关闭其服务器上的ping服务。因此,如果您的目标是最终检查服务器是否在线,这不是100%可靠的方法。

© www.soinside.com 2019 - 2024. All rights reserved.