Need help with go-fastping?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

tatsushid
458 Stars 94 Forks MIT License 54 Commits 23 Opened issues

Description

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

Services available

!
?

Need anything else?

Contributors list

# 11,034
Go
Shell
hugo
zstanda...
41 commits
# 364,801
C++
Shell
CSS
3 commits
# 107,620
hugo
k8s
D
Neovim
3 commits
# 11,071
Go
oauth2
tsdb
cockroa...
2 commits
# 89,719
Go
golang
mutex
Telegra...
2 commits
# 274,615
Shell
Go
Lua
recover...
1 commit
# 138,282
gui-too...
Windows
declara...
PHP
1 commit
# 6,737
Go
React
golang
system-...
1 commit

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.