Heim  >  Artikel  >  Backend-Entwicklung  >  Wie überprüfe ich in Go, ob eine IP-Adresse innerhalb eines bestimmten Bereichs liegt?

Wie überprüfe ich in Go, ob eine IP-Adresse innerhalb eines bestimmten Bereichs liegt?

Patricia Arquette
Patricia ArquetteOriginal
2024-11-26 01:53:09439Durchsuche

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

Überprüfen des IP-Adressbereichs in Go/GoLang

Bei der Arbeit mit IP-Adressen in Go müssen Sie möglicherweise feststellen, ob ein bestimmter IP-Adressbereich vorhanden ist Die IP-Adresse liegt in einem bestimmten Bereich. Mit den integrierten Funktionen von Go wird diese Aufgabe einfach und effizient.

Um zu überprüfen, ob eine IP-Adresse in einem Bereich liegt, führen Sie die folgenden Schritte aus:

1. Konvertieren Sie IP-Adressen in Bytes:

Konvertieren Sie die Start- und End-IP-Adressen des Bereichs sowie die eingegebene IP-Adresse mit der Funktion net.ParseIP in Byte-Slices. Diese Funktion gibt einen IP-Typ zurück, der eine Bigendian-Byte-Slice-Darstellung der IP-Adresse ist.

2. Byte-Slices vergleichen:

Verwenden Sie bytes.Compare, um die Byte-Slices der eingegebenen IP-Adresse und der Start- und End-IP-Adressen des Bereichs zu vergleichen. Diese Funktion gibt eine Ganzzahl zurück, die die relative Reihenfolge der Byte-Slices angibt:

  • Wenn bytes.Compare(input, start) >= 0, ist die eingegebene IP-Adresse größer oder gleich dem Anfang von der Bereich.
  • Wenn bytes.Compare(input, end) <= 0, ist die eingegebene IP-Adresse kleiner oder gleich dem Ende des Bereich.

Beispielcode:

Der folgende Code zeigt, wie mithilfe von Bytes überprüft wird, ob eine IP-Adresse in einem Bereich liegt. Vergleichen Sie:

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

In diesem Beispiel versucht die Prüffunktion zunächst, die eingegebene IP-Adresse zu analysieren. Wenn es sich nicht um eine gültige IPv4-Adresse handelt, wird eine Fehlermeldung zurückgegeben. Andernfalls werden die Byte-Slices der eingegebenen IP-Adresse mithilfe von bytes.Compare mit den Start- und End-IP-Adressen des Bereichs verglichen. Anschließend wird das Ergebnis gedruckt und ein boolescher Wert zurückgegeben, der angibt, ob die eingegebene IP-Adresse im Bereich liegt.

Durch die Verwendung von bytes.Compare bietet Go eine effiziente und unkomplizierte Möglichkeit, zu überprüfen, ob eine IP-Adresse innerhalb eines bestimmten Bereichs liegt , was es zu einem wertvollen Werkzeug für IP-Adressmanipulationsaufgaben macht.

Das obige ist der detaillierte Inhalt vonWie überprüfe ich in Go, ob eine IP-Adresse innerhalb eines bestimmten Bereichs liegt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn