Wie ping eine IP-Adresse in golang
Wie können Sie ping eine IP-Adresse aus einem golang Anwendung? Das ultimative Ziel ist zu überprüfen, ob ein server online ist.
Geht einen Weg in der standard-Bibliothek zum implementieren einer Netzwerk-ping?
- prüfen Sie das gist.github.com/kenshinx/5796276
- godoc.org/golang.org/x/net/icmp
- Danke! Guck ich in die ICMP-ich wünschte, ich könnte markieren die Kommentare als Antworten.
- Vielen Dank für das wesentliche, es sieht interessant aus.
- Warum wollen Sie, um zu überprüfen, ob er online ist? Je nach dem Grund der beste Weg könnte einfach sein, zu versuchen, eine Verbindung zu öffnen
- Hinzufügen user3591723 s point, versuchen Sie, ping für einen server, die möglicherweise oder möglicherweise nicht auf einen ping reagieren, wenn Sie eine Verbindung herstellen möchten sowieso nur verlangsamt den Prozess. Die besten "ping" ist in diesem Fall ein SYN-Paket, D. H., eine Verbindung zum server herstellen.
- Zu überwachen, wenn einige unserer Server online sind oder nicht.
- Sie können ping-Anruf auf der native os. Cross-Plattform-pings in golang nicht allzu schlecht. Beispiel: github.com/jcuga/goping
Du musst angemeldet sein, um einen Kommentar abzugeben.
Als @desaipath erwähnt, es gibt keine Möglichkeit, dies zu tun in der standard-Bibliothek. Jedoch, Sie brauchen nicht den code zu schreiben, für sich selbst - es ist bereits getan:
Beachten Sie, das senden von ICMP-Paketen erfordert root-Privilegien
Ich brauchte, die gleiche Sache wie Sie und ich gemacht haben, ein workaround (mit
exec.Command
) für meinen Raspberry Pi, um zu überprüfen ob Server online sind. Hier ist der experimentelle codeKeine.
Gehen nicht über eine integrierte Möglichkeit, um ping auf einen server in der standard-Bibliothek.
Sie müssen code schreiben, der durch sich selbst.
Für, die, blickt man in icmp Abschnitt golang-Bibliothek. Und verwenden diese Liste von Nachrichten Steuern, zu konstruieren, die icmp-Nachricht korrekt.
Aber, Bedenken Sie, dass einige server administrator heruntergefahren ping-Dienst auf Ihren server, für Sicherheit Grund. Also, Wenn Ihr Ziel ist es, letztendlich zu überprüfen, ob server online ist oder nicht, dies ist keine 100% zuverlässige Methode.