golang测试是否能ping通


本文摘自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()// blocks until finished

    stats := pinger.Statistics()

 

    fmt.Println(stats)

    // 有回包,就是说明IP是可用的

    if stats.PacketsRecv >= 1 {

        return true

    }

    return false

}

这里是通过回包数量来判断的,也可以通过掉包率来判断。同时,该库提供了Statistics结构体,包含了详细的ICMP信息,如下

阅读剩余部分

相关阅读 >>

golang usr/local/go/pkg/tool/linux_amd64/link: fingerprint mismatch 解决办法

kubernetes学习笔记之csi external provisioner源码解析

记一次因为共享变量的犯错误

26 goroutine channel实现并发和并行(三)

go验证身份证号

golang能写人工智能吗

29 golang反射与底层编程

15 golang结构体详解(一)

安装go语言支持及gogs版本管理工具

手撸golang 结构型设计模式 适配器模式

更多相关阅读请进入《golang》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...