Maison > développement back-end > Golang > Comment vérifier si une adresse IP se trouve dans une plage spécifique dans Go ?

Comment vérifier si une adresse IP se trouve dans une plage spécifique dans Go ?

Patricia Arquette
Libérer: 2024-11-26 01:53:09
original
479 Les gens l'ont consulté

How to Check if an IP Address is Within a Specific Range in Go?

Vérification de la plage d'adresses IP dans Go/GoLang

Lorsque vous travaillez avec des adresses IP dans Go, vous pouvez rencontrer le besoin de déterminer si une adresse IP donnée L'adresse IP se situe dans une plage spécifique. Cette tâche est rendue simple et efficace grâce aux fonctions intégrées de Go.

Pour vérifier si une adresse IP se trouve dans une plage, suivez ces étapes :

1. Convertir les adresses IP en octets :

Convertissez les adresses IP de début et de fin de la plage, ainsi que l'adresse IP d'entrée, en tranches d'octets à l'aide de la fonction net.ParseIP. Cette fonction renvoie un type IP, qui est une représentation bigendienne en tranches d'octets de l'adresse IP.

2. Comparez les tranches d'octets :

Utilisez bytes.Compare pour comparer les tranches d'octets de l'adresse IP d'entrée et les adresses IP de début et de fin de la plage. Cette fonction renvoie un entier indiquant l'ordre relatif des tranches d'octets :

  • Si bytes.Compare(input, start) >= 0, l'adresse IP d'entrée est supérieure ou égale au début de la plage.
  • Si bytes.Compare(input, end) <= 0, l'adresse IP d'entrée est inférieure ou égale à la fin de la plage.

Exemple de code :

Le code suivant montre comment vérifier si une adresse IP se trouve dans une plage en utilisant des octets.Compare :

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

Dans cet exemple, la fonction de vérification essaie d'abord d'analyser l'adresse IP d'entrée. S'il ne s'agit pas d'une adresse IPv4 valide, il renvoie un message d'erreur. Sinon, il compare les tranches d'octets de l'adresse IP d'entrée avec les adresses IP de début et de fin de la plage à l'aide de bytes.Compare. Il imprime ensuite le résultat et renvoie un booléen indiquant si l'adresse IP d'entrée se trouve dans la plage.

En utilisant bytes.Compare, Go fournit un moyen efficace et simple de vérifier si une adresse IP se trouve dans une plage spécifiée. , ce qui en fait un outil précieux pour les tâches de manipulation d'adresses IP.

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!

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