jpi*_*ora 15
正如@desaipath所提到的,在标准库中无法做到这一点.但是,您不需要为自己编写代码 - 它已经完成:
注意,发送ICMP数据包需要root权限
虽然不是真正的 ICMP ping,但这就是使用 TCP 协议探测我的服务器的用途:
host := "example.com"
port := "80"
timeout := time.Duration(1 * time.Second)
_, err := net.DialTimeout("tcp", host+":"+port, timeout)
if err != nil {
fmt.Printf("%s %s %s\n", host, "not responding", err.Error())
} else {
fmt.Printf("%s %s %s\n", host, "responding on port:", port)
}
Run Code Online (Sandbox Code Playgroud)
@jpillora 的回答建议使用go-fastping,但该库自 2016 年 1 月 8 日起未更新。这可能不是问题,因为 ping 的逻辑非常简单,但如果您想要更新的软件包,则有go-ping.
我需要与您相同的东西,并且exec.Command为我的Raspberry Pi 做了一个变通办法(使用)来检查服务器是否在线。这是实验代码
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")
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
19785 次 |
| 最近记录: |