Maison  >  Article  >  développement back-end  >  Comment vérifier la validité de l'adresse IP dans Golang

Comment vérifier la validité de l'adresse IP dans Golang

WBOY
WBOYoriginal
2023-06-24 08:28:571502parcourir

En golang, vérifier la validité d'une adresse IP nécessite généralement l'utilisation de certaines fonctions et structures du package net. Dans cet article, nous présenterons comment utiliser ces fonctions et structures pour vérifier la validité d'une adresse IP.

Tout d'abord, nous devons utiliser la fonction net.ParseIP() pour analyser l'adresse IP et la convertir en type net.IP. Cette fonction accepte un paramètre de chaîne et renvoie une valeur de type net.IP. Si la chaîne est une adresse IP valide, renvoie la valeur de type net.IP pour cette adresse IP. Si la chaîne n'est pas une adresse IP valide, une valeur nulle est renvoyée.

Par exemple, le code suivant analyse la chaîne "192.168.1.1" en une valeur de type net.IP et l'assigne à la variable ip :

ip := net.ParseIP("192.168.1.1")

Si la chaîne n'est pas une adresse IP valide, ip sera nulle. Par conséquent, lors de la vérification de la validité d’une adresse IP, nous devons vérifier si la variable ip est nulle.

Ensuite, nous pouvons utiliser les fonctions net.IP.IsIPv4() et net.IP.IsIPv6() pour déterminer si l'adresse IP est une adresse IPv4 ou une adresse IPv6. Si l'adresse IP est une adresse IPv4, la fonction IsIPv4() renvoie true, tandis que la fonction IsIPv6() renvoie false. Si l'adresse IP est une adresse IPv6, la fonction IsIPv4() renvoie false et la fonction IsIPv6() renvoie true.

Par exemple, le code suivant vérifie si la variable ip est une adresse IPv4 et attribue le résultat à la variable isIPv4 :

isIPv4 := ip != nil && ip.IsIPv4()

Si la variable ip est une adresse IPv4 valide, alors isIPv4 sera vrai. Sinon, isIPv4 sera faux.

De plus, lors de la vérification de la validité d'une adresse IP, nous devons également vérifier si l'adresse IP se situe dans une plage d'adresses IP spécifique. En Golang, nous pouvons utiliser le type net.IPNet pour représenter une plage d'adresses IP. net.IPNet se compose d'une adresse IP et d'un masque de sous-réseau, utilisé pour identifier une plage d'adresses IP.

Par exemple, le code suivant utilise la fonction net.ParseCIDR() pour analyser la chaîne "192.168.1.0/24" et la convertir en type net.IPNet :

ip, subnet, _ := net.ParseCIDR("192.168.1.0/24")

où ip est une valeur de net.IP tapez, représentant l’adresse IP « 192.168.1.0 ». subnet est une valeur de type net.IPMask, représentant le masque de sous-réseau. Cette fonction renvoie également une valeur de type error pour indiquer si une erreur s'est produite. Dans cet exemple, nous ignorons cette valeur.

Ensuite, nous pouvons utiliser la fonction net.IPNet.Contains() pour vérifier si une adresse IP se trouve dans la plage d'adresses IP spécifiée. Par exemple, le code suivant vérifie si l'adresse IP « 192.168.1.100 » se situe dans la plage 192.168.1.0/24 :

isInRange := subnet.Contains(net.ParseIP("192.168.1.100"))

Si l'adresse IP se situe dans la plage d'adresses IP spécifiée, isInRange sera vrai. Sinon, isInRange sera faux.

En résumé, nous pouvons utiliser ces fonctions et structures dans le package net pour vérifier la validité de l'adresse IP. Le code suivant montre comment les utiliser ensemble :

func validateIP(ipStr string) bool {
    ip := net.ParseIP(ipStr)
    if ip == nil {
        return false
    }

    if ip.IsIPv4() {
        subnet := net.IPv4(192, 168, 1, 0).Mask(net.CIDRMask(24, 32))
        return subnet.Contains(ip)
    }

    if ip.IsIPv6() {
        subnet := &net.IPNet{
            IP:   net.ParseIP("2001:db8::"),
            Mask: net.CIDRMask(64, 128),
        }
        return subnet.Contains(ip)
    }

    return false
}

Cette fonction accepte un paramètre de chaîne ipStr représentant l'adresse IP à vérifier. Il analyse d'abord la chaîne et la convertit en une valeur de type net.IP. Si la valeur est nulle, cela signifie que l'adresse IP n'est pas valide et la fonction renvoie faux. Sinon, la fonction sélectionne la plage d'adresses IP correspondante selon que l'adresse IP est une adresse IPv4 ou IPv6, et utilise la fonction net.IPNet.Contains() pour vérifier si l'adresse IP se trouve dans la plage. La fonction renvoie vrai si l'adresse IP se situe dans la plage d'adresses IP spécifiée. Sinon, la fonction renvoie false.

En utilisant ces fonctions et structures dans le package net, nous pouvons facilement vérifier la validité de l'adresse IP et garantir que l'application gère correctement les connexions 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