1
0
mirror of https://github.com/taigrr/go-fastping synced 2025-01-18 05:03:15 -08:00
Tatsushi Demachi 5bf6f7ec59 Remove golang.org/x/net/internal/iana dependency
Since Go 1.5, internal package rule (see
https://golang.org/s/go14internal for more details) applies to GOPATH
packages. It prevents this package from loading iana package and causes
package building failure.

This fixes it by adding its own ICMP protocol constants and removing
iana package dependency.

Fix #10
2015-07-23 23:31:02 +09:00
2013-09-06 00:31:36 +09:00
2015-04-25 08:46:50 +09:00
2013-09-05 07:52:42 -07:00

go-fastping

go-fastping is a Go language's ICMP ping library inspired by AnyEvent::FastPing Perl module to send ICMP ECHO REQUEST packets quickly. Original Perl module is available at http://search.cpan.org/~mlehmann/AnyEvent-FastPing-2.01/

It hasn't been fully implemented original functions yet.

GoDoc

Installation

Install and update this go package with go get -u github.com/tatsushid/go-fastping

Examples

Import this package and write

p := fastping.NewPinger()
ra, err := net.ResolveIPAddr("ip4:icmp", os.Args[1])
if err != nil {
	fmt.Println(err)
	os.Exit(1)
}
p.AddIPAddr(ra)
p.OnRecv = func(addr *net.IPAddr, rtt time.Duration) {
	fmt.Printf("IP Addr: %s receive, RTT: %v\n", addr.String(), rtt)
}
p.OnIdle = func() {
	fmt.Println("finish")
}
err = p.Run()
if err != nil {
	fmt.Println(err)
}

It sends an ICMP packet and wait a response. If it receives a response, it calls "receive" callback. After that, MaxRTT time passed, it calls "idle" callback. For more detail, refer godoc and if you need more example, please see "cmd/ping/ping.go".

Caution

This package implements ICMP ping using both raw socket and UDP. If your program uses this package in raw socket mode, it needs to be run as a root user.

License

go-fastping is under MIT License. See the LICENSE file for details.

Description
ICMP ping library for Go inspired by AnyEvent::FastPing Perl module
Readme 110 KiB
Languages
Go 100%