Maison  >  Article  >  développement back-end  >  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
Mary-Kate Olsenoriginal
2024-11-10 07:25:02860parcourir

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")
}

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

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:
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