Maison > développement back-end > Golang > Comment vérifier efficacement si une adresse IP se situe dans une plage en Go ?

Comment vérifier efficacement si une adresse IP se situe dans une plage en Go ?

Mary-Kate Olsen
Libérer: 2024-11-10 07:25:02
original
930 Les gens l'ont consulté

How to Efficiently Check if an IP Address Falls Within a Range in Go?

Vérification rapide de la plage IP dans Go

Dans Go, déterminer efficacement si une adresse IP se situe dans une plage spécifiée est crucial pour la gestion du réseau et tâches de sécurité. Cet article explore l'approche la plus rapide pour relever ce défi.

Le moyen efficace de vérifier si une adresse IP se trouve dans une plage spécifique est de la comparer aux points de terminaison de la plage à l'aide de la fonction bytes.Compare. Les adresses IP sont représentées sous forme de tranches d'octets bigendiennes dans Go, ce qui rend cette comparaison précise.

L'exemple de code ci-dessous illustre cette approche :

package main

import (
    "bytes"
    "fmt"
    "net"
)

var (
    ip1 = net.ParseIP("216.14.49.184")
    ip2 = net.ParseIP("216.14.49.191")
)

func check(ip string) bool {
    trial := net.ParseIP(ip)
    if trial.To4() == nil {
        fmt.Printf("%v is not an IPv4 address\n", trial)
        return false
    }
    if bytes.Compare(trial, ip1) >= 0 && bytes.Compare(trial, ip2) <= 0 {
        fmt.Printf("%v is between %v and %v\n", trial, ip1, ip2)
        return true
    }
    fmt.Printf("%v is NOT between %v and %v\n", trial, ip1, ip2)
    return false
}

func main() {
    check("1.2.3.4")
    check("216.14.49.185")
    check("1::16")
}
Copier après la connexion

Ce code produit le résultat suivant :

1.2.3.4 is NOT between 216.14.49.184 and 216.14.49.191
216.14.49.185 is between 216.14.49.184 and 216.14.49.191
1::16 is not an IPv4 address
Copier après la connexion

En résumé, utiliser bytes.Compare pour comparer les adresses IP dans les contrôles de plage est la méthode la plus efficace dans Go, permettant une analyse précise et rapide. déterminations.

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!

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal