Comments (7)
@sparrc Any ideas?
from ping.
Hi @austin-barrington, Might be a bug, but this part of your code looks a little suspect to me:
for i := 0; i < sliceLength; i++ {
go func(i int) {
defer wg.Done()
host := hosts[i]
stats := PingCheck(host)
fmt.Println(host, ": ", stats)
}(i)
}
Because you are reusing the i
variable within the gofunc. Could you change it to this and test again?:
for i := 0; i < sliceLength; i++ {
go func(j int) {
defer wg.Done()
host := hosts[j]
stats := PingCheck(host)
fmt.Println(host, ": ", stats)
}(i)
}
from ping.
Hello @sparrc, your recommendation doesn't help.
Output:
PING 8.8.8.8 (8.8.8.8):
PING 4.4.4.4 (4.4.4.4):
PING 1.2.3.4 (1.2.3.4):
24 bytes from 4.4.4.4: icmp_seq=0 time=65.0315ms
24 bytes from 8.8.8.8: icmp_seq=0 time=65.0315ms
24 bytes from 1.2.3.4: icmp_seq=0 time=65.0315ms
--- 4.4.4.4 ping statistics ---
1 packets transmitted, 1 packets received, 0% packet loss
round-trip min/avg/max/stddev = 65.0315ms/65.0315ms/65.0315ms/0s
--- 8.8.8.8 ping statistics ---
1 packets transmitted, 1 packets received, 0% packet loss
round-trip min/avg/max/stddev = 65.0315ms/65.0315ms/65.0315ms/0s
8.8.8.8 : &{1 1 0 8.8.8.8 8.8.8.8 [65.0315ms] 65.0315ms 65.0315ms 65.0315ms 0s}
4.4.4.4 : &{1 1 0 4.4.4.4 4.4.4.4 [65.0315ms] 65.0315ms 65.0315ms 65.0315ms 0s}
--- 1.2.3.4 ping statistics ---
1 packets transmitted, 1 packets received, 0% packet loss
round-trip min/avg/max/stddev = 65.0315ms/65.0315ms/65.0315ms/0s
1.2.3.4 : &{1 1 0 1.2.3.4 1.2.3.4 [65.0315ms] 65.0315ms 65.0315ms 65.0315ms 0s}
from ping.
Has there been any solution to this issue? I ran into this same problem.
from ping.
Has there been any solution to this issue? I ran into this same problem.
#84 has been fixed
from ping.
I'm failing to replicate this using the code in the most recent commit on master
. Is anyone still experiencing this issue?
Code used to test
package main
import (
"fmt"
"sync"
"github.com/go-ping/ping"
)
func PingCheck(HostToPing string) *ping.Statistics {
pinger, err := ping.NewPinger(HostToPing)
if err != nil {
panic(err)
}
pinger.Count = 10
pinger.SetPrivileged(true)
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.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())
pinger.Run()
return pinger.Statistics()
}
func main() {
hosts := [...]string{"1.1.1.1", "8.8.8.8", "1.2.3.4", "9.9.9.9"}
sliceLength := len(hosts)
var wg sync.WaitGroup
wg.Add(sliceLength)
for i := 0; i < sliceLength; i++ {
go func(j int) {
defer wg.Done()
host := hosts[j]
stats := PingCheck(host)
fmt.Println(host, ": ", stats)
}(i)
}
wg.Wait()
}
from ping.
Should now be resolved by #130, #132 and #134.
from ping.
Related Issues (20)
- socket: permission denied HOT 2
- TTL not return as expected (From a network point of view)
- listen ip4:icmp : socket: operation not permitted macOS Monterey HOT 9
- avgRtt is sometimes negative HOT 3
- ping endlessly running in case the network interface is lost while the pinger is not yet finished HOT 2
- ping result is always same for different addresses HOT 2
- Event for detecting when a ping request times out HOT 1
- Pings not being returned after a certain number of IP addresses HOT 1
- Randomly running into issue while continously pinging 1.1.1.1 HOT 2
- logger.Fatal() causes entire app to exit HOT 5
- If the host is down ping blocks until the timeout is reached
- bind: cannot assign requested address HOT 2
- cannot find package HOT 2
- ping multiple hosts HOT 1
- 有时候莫名其妙的卡住 HOT 2
- In "mac", the call "pinger.Run()" struck for ever
- How to get network interface used to make the ping? HOT 3
- Some packet loss causes ping to hang forever HOT 3
- Is this project abandoned? HOT 3
- not support ipv6? HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from ping.