在<Go语言编程>中有icmp ping的例子,不过实际测试不通过....这个有空研究一下源码再看.
注: 原文代码需要修改
_, err = conn.Read(msg[0:])
改为_, err = conn.Read(msg[20:])
在网找到了一个可用的模块,还可以支持ipv6(摘自go自带源码 src/pkg/net/ipraw_test.go)
http://golangtc.com/t/526e1f8b320b522433000003
https://github.com/paulstuart/ping/blob/master/ping.go
简单测试了一下.可用
package main
import (
"ping"
"fmt"
"time"
"os"
)
func main() {
//1.输入参数处理.这里使用os而非flag
var host string
if len(os.Args) != 2 {
host="127.0.0.1"
}else{
host = os.Args[1] //目标域名
}
t1:=time.Now().UnixNano()
alive,err:=ping.Ping(host,3)
fmt.Println("result ",alive,err)
t2:=time.Now().UnixNano()
fmt.Println(t2-t1);
}
本文介绍了一个基于Go语言的ICMP Ping实现案例,通过修改原始代码使其能够正常工作,并支持IPv6。文中提供了一个简单的测试示例,展示了如何使用第三方模块ping进行主机可达性检查。
2371

被折叠的 条评论
为什么被折叠?



