Maison >développement back-end >Golang >Comment valider efficacement les plages IP dans Go/GoLang ?

Comment valider efficacement les plages IP dans Go/GoLang ?

DDD
DDDoriginal
2024-11-13 06:44:02824parcourir

How to Efficiently Validate IP Ranges in Go/GoLang?

Validation efficace de la plage IP dans Go/GoLang

Déterminer si une adresse IP se situe dans une plage spécifiée est une exigence courante dans les applications réseau. Dans Go/GoLang, cela peut être réalisé efficacement en utilisant la représentation numérique inhérente des adresses IP.

Pour représenter les adresses IP, Go utilise des tranches d'octets bigendiens, fournissant une méthode pratique de comparaison à l'aide d'octets.Compare. Cette approche élimine le besoin d'analyse de chaîne ou d'expressions régulières complexes.

Considérez une plage IP définie comme 216.14.49.184 à 216.14.49.191. Pour valider si une adresse IP d'entrée, telle que 216.14.49.185, appartient à cette plage, nous pouvons exploiter le code suivant :

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 script démontre l'efficacité de cette approche, en validant et en classant les adresses IP avec facilité :

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 conclusion, cette méthode fournit un moyen simple et efficace de valider les adresses IP par rapport à une plage spécifiée dans Go/GoLang, un outil inestimable pour les applications réseau.

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