Heim  >  Artikel  >  Backend-Entwicklung  >  Golang testet, ob es erfolgreich pingen kann

Golang testet, ob es erfolgreich pingen kann

尚
Original
2020-01-13 15:27:376475Durchsuche

Golang testet, ob es erfolgreich pingen kann

Im Projekt müssen wir wissen, welche IPs verfügbare IPs sind, deshalb haben wir über die Verwendung von ICMP (Internet Control Message Protocol) nachgedacht. Sie können die Open-Source-Bibliothek –github.com/sparrc/go-ping verwenden, um festzustellen, ob der Ping erfolgreich sein kann.

Code zur Verwendung der Open-Source-Bibliothek –github.com/sparrc/go-ping, um zu bestimmen, ob Ping erfolgreich sein kann:

func ServerPing(target string) bool  {
	pinger, err := ping.NewPinger(target)
	if err != nil {
		panic(err)
	}

	pinger.Count = ICMPCOUNT
	pinger.Timeout = time.Duration(PINGTIME*time.Millisecond)
	pinger.SetPrivileged(true)
	pinger.Run()// blocks until finished
	stats := pinger.Statistics()

	fmt.Println(stats)
	// 有回包,就是说明IP是可用的
	if stats.PacketsRecv >= 1 {
		return true
	}
	return false
}

Dies wird anhand der Anzahl der zurückgegebenen Pakete oder anhand der beurteilt Paket-Drop-Rate. Gleichzeitig stellt die Bibliothek die Statistikstruktur einschließlich detaillierter ICMP-Informationen wie folgt bereit

type Statistics struct {
	// PacketsRecv is the number of packets received.
	PacketsRecv int

	// PacketsSent is the number of packets sent.
	PacketsSent int

	// PacketLoss is the percentage of packets lost.
	PacketLoss float64

	// IPAddr is the address of the host being pinged.
	IPAddr *net.IPAddr

	// Addr is the string address of the host being pinged.
	Addr string

	// Rtts is all of the round-trip times sent via this pinger.
	Rtts []time.Duration

	// MinRtt is the minimum round-trip time sent via this pinger.
	MinRtt time.Duration

	// MaxRtt is the maximum round-trip time sent via this pinger.
	MaxRtt time.Duration

	// AvgRtt is the average round-trip time sent via this pinger.
	AvgRtt time.Duration

	// StdDevRtt is the standard deviation of the round-trip times sent via
	// this pinger.
	StdDevRtt time.Duration
}

Weitere Golang-Kenntnisse finden Sie auf der chinesischen PHP-WebsiteGolang-TutorialSpalte.

Das obige ist der detaillierte Inhalt vonGolang testet, ob es erfolgreich pingen kann. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn