go-fastping

by tatsushid

tatsushid / go-fastping

ICMP ping library for Go inspired by AnyEvent::FastPing Perl module

432 Stars 94 Forks Last release: Not found MIT License 54 Commits 0 Releases

Available items

No Items, yet!

The developer of this repository has not created any items for sale yet. Need a bug fixed? Help with integration? A different license? Create a request here:

go-fastping

go-fastping is a Go language ICMP ping library, inspired by the

AnyEvent::FastPing
Perl module, for quickly sending ICMP ECHO REQUEST packets. Original Perl module is available at http://search.cpan.org/~mlehmann/AnyEvent-FastPing-2.01/

All original functions haven't been implemented yet.

GoDoc

Installation

Install and update 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)
}

The example sends an ICMP packet and waits for a response. If it receives a response, it calls the "receive" callback. After that, once MaxRTT time has passed, it calls the "idle" callback. For more details, refer to the godoc, and if you need more examples, 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.

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.