Maison > développement back-end > Golang > Golang teste s'il peut envoyer un ping avec succès

Golang teste s'il peut envoyer un ping avec succès

Libérer: 2020-01-13 15:27:37
original
6545 Les gens l'ont consulté

Golang teste s'il peut envoyer un ping avec succès

Dans le projet, nous avons besoin de savoir quelles IP sont des IP disponibles, nous avons donc pensé à utiliser ICMP (Internet Control Message Protocol). Vous pouvez utiliser la bibliothèque open source –github.com/sparrc/go-ping pour déterminer si le ping peut réussir.

Code pour utiliser la bibliothèque open source –github.com/sparrc/go-ping pour déterminer si le ping peut réussir :

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
}
Copier après la connexion

Ceci est jugé par le nombre de paquets renvoyés, ou par le juge du taux d’abandon des paquets. Dans le même temps, la bibliothèque fournit la structure des statistiques, y compris des informations ICMP détaillées, comme suit

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
}
Copier après la connexion

Pour plus de connaissances sur Golang, veuillez faire attention au site Web PHP chinoistutoriel golangColonne.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal