本文摘自php中文网,作者尚,侵删。

在项目中,我们需要知道哪些IP是可用IP,这时候想到了用ICMP(Internet控制报文协议)。可以使用开源库–github.com/sparrc/go-ping来判断是否能ping通。
使用–github.com/sparrc/go-ping开源库判断是否能ping通的代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | func ServerPing(target string) bool {
pinger, err := ping.NewPinger(target)
if err != nil {
panic(err)
}
pinger. Count = ICMPCOUNT
pinger.Timeout = time.Duration(PINGTIME*time.Millisecond)
pinger.SetPrivileged(true)
pinger.Run()
stats := pinger.Statistics()
fmt.Println(stats)
if stats.PacketsRecv >= 1 {
return true
}
return false
}
|
这里是通过回包数量来判断的,也可以通过掉包率来判断。同时,该库提供了Statistics结构体,包含了详细的ICMP信息,如下
阅读剩余部分
相关阅读 >>
golang 空指针怎么检查
聊聊dubbo-go-proxy的authorityfilter
go语言基础之运算符
golang的slice如何去重
golang 写个归并排序
在 go 中使用控制流
最简单的go dockerfile编写姿势,没有之一!
[译]go语言内存布局
手撸golang 基本数据结构与算法 链表
golang mutex 源码解析
更多相关阅读请进入《golang》频道 >>
老貘
一个与时俱进的Go编程知识库。
转载请注明出处:木庄网络博客 » golang测试是否能ping通