在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
开源软件名称:go-ping/ping开源软件地址:https://github.com/go-ping/ping开源编程语言:Go 98.3%开源软件介绍:go-pingA simple but powerful ICMP echo (ping) library for Go, inspired by go-fastping. Here is a very simple example that sends and receives three packets: pinger, err := ping.NewPinger("www.google.com")
if err != nil {
panic(err)
}
pinger.Count = 3
err = pinger.Run() // Blocks until finished.
if err != nil {
panic(err)
}
stats := pinger.Statistics() // get send/receive/duplicate/rtt stats Here is an example that emulates the traditional UNIX ping command: pinger, err := ping.NewPinger("www.google.com")
if err != nil {
panic(err)
}
// Listen for Ctrl-C.
c := make(chan os.Signal, 1)
signal.Notify(c, os.Interrupt)
go func() {
for _ = range c {
pinger.Stop()
}
}()
pinger.OnRecv = func(pkt *ping.Packet) {
fmt.Printf("%d bytes from %s: icmp_seq=%d time=%v\n",
pkt.Nbytes, pkt.IPAddr, pkt.Seq, pkt.Rtt)
}
pinger.OnDuplicateRecv = func(pkt *ping.Packet) {
fmt.Printf("%d bytes from %s: icmp_seq=%d time=%v ttl=%v (DUP!)\n",
pkt.Nbytes, pkt.IPAddr, pkt.Seq, pkt.Rtt, pkt.Ttl)
}
pinger.OnFinish = func(stats *ping.Statistics) {
fmt.Printf("\n--- %s ping statistics ---\n", stats.Addr)
fmt.Printf("%d packets transmitted, %d packets received, %v%% packet loss\n",
stats.PacketsSent, stats.PacketsRecv, stats.PacketLoss)
fmt.Printf("round-trip min/avg/max/stddev = %v/%v/%v/%v\n",
stats.MinRtt, stats.AvgRtt, stats.MaxRtt, stats.StdDevRtt)
}
fmt.Printf("PING %s (%s):\n", pinger.Addr(), pinger.IPAddr())
err = pinger.Run()
if err != nil {
panic(err)
} It sends ICMP Echo Request packet(s) and waits for an Echo Reply in
response. If it receives a response, it calls the For a full ping example, see cmd/ping/ping.go. Installation
To install the native Go ping executable: go get -u github.com/go-ping/ping/...
$GOPATH/bin/ping Supported Operating SystemsLinuxThis library attempts to send an "unprivileged" ping via UDP. On Linux, this must be enabled with the following sysctl command:
If you do not wish to do this, you can call
See this blog and the Go x/net/icmp package for more details. WindowsYou must use
Despite the method name, this should work without the need to elevate privileges and has been tested on Windows 10. Please note that accessing packet TTL values is not supported due to limitations in the Go x/net/ipv4 and x/net/ipv6 packages. Plan 9 from Bell LabsThere is no support for Plan 9. This is because the entire Maintainers and Getting Help:This repo was originally in the personal account of sparrc, but is now maintained by the go-ping organization. For support and help, you usually find us in the #go-ping channel of Gophers Slack. See https://invite.slack.golangbridge.org/ for an invite to the Gophers Slack org. ContributingRefer to CONTRIBUTING.md |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论