16 Star 55 Fork 29

光宇开源 / SmartPing

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
goping.go 1.13 KB
一键复制 编辑 原始数据 按行查看 历史
ToryZen 提交于 2017-09-24 15:47 . use float instad int as ping rtt result
package main
import (
"encoding/json"
"flag"
"fmt"
"github.com/gy-games-libs/go-fastping"
"net"
"os"
"strconv"
"time"
)
type Str struct {
Flag bool
Timeout string
Message string
}
func main() {
ip := flag.String("ip", "127.0.0.1", "ip address!")
debug := flag.Bool("d", false, "debug!")
flag.Parse()
Ping(*ip, *debug)
}
func Ping(Addr string, debug bool) {
var rt Str
rt.Message = "timeout"
p := fastping.NewPinger()
ra, err := net.ResolveIPAddr("ip4:icmp", Addr)
if err == nil {
p.MaxRTT = time.Millisecond * 3000
p.AddIPAddr(ra)
p.OnRecv = func(addr *net.IPAddr, rtt time.Duration) {
rt.Flag = true
rt.Message = ""
//fmt.Print(rtt.Nanoseconds())
rt.Timeout = strconv.FormatFloat((float64(rtt.Nanoseconds()) / float64(1000000)), 'f', 3, 64)
if debug == true {
fmt.Println("[func:Ping] Addr:", Addr, " Delay:", rt.Timeout)
}
out, _ := json.Marshal(rt)
fmt.Print(string(out))
os.Exit(0)
}
err = p.Run()
if err != nil {
rt.Flag = false
rt.Message = err.Error()
}
} else {
rt.Flag = false
rt.Message = err.Error()
}
out, _ := json.Marshal(rt)
fmt.Print(string(out))
}
Go
1
https://gitee.com/gy-games/smartping.git
git@gitee.com:gy-games/smartping.git
gy-games
smartping
SmartPing
v0.4.1

搜索帮助