Wie kann man in Go effizient prüfen, ob eine IP-Adresse innerhalb eines Bereichs liegt?

DDD
Freigeben: 2024-11-11 15:20:03
Original
788 Leute haben es durchsucht

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

Effiziente Überprüfung von IP-Adressen innerhalb eines Bereichs in Go

Die Feststellung, ob eine IP-Adresse in einen bestimmten Bereich fällt, ist eine häufige Anforderung in verschiedenen Netzwerken Operationen. In Go gibt es mehrere Ansätze, um diese Aufgabe zu lösen.

Schnellste Methode: bytes.Compare

Eine der effizientesten Methoden ist die Verwendung der bytes.Compare-Funktion um die Byte-Darstellung der IP-Adressen zu vergleichen.

import (
    "bytes"
    "net"
)

// Check if an IP address is within a range
func check(trial, start, end net.IP) bool {
    if start.To4() == nil || end.To4() == nil || trial.To4() == nil {
        return false
    }
    return bytes.Compare(trial, start) >= 0 && bytes.Compare(trial, end) <= 0
}
Nach dem Login kopieren

Bei diesem Ansatz prüfen wir zunächst, ob die angegebenen IP-Adressen gültige IPv4-Adressen sind. Anschließend verwenden wir bytes.Compare, um die Byte-Darstellungen der Test-IP und die Start- und Endpunkte des Bereichs zu vergleichen. Wenn der Vergleich für beide Prüfungen einen nicht negativen Wert ergibt, bedeutet dies, dass die IP-Adresse innerhalb des Bereichs liegt.

Beispielverwendung

Der folgende Code demonstriert dies Verwendung der Bytes.Compare-Methode:

import (
    "fmt"
    "net"
)

var (
    ip1 = net.ParseIP("216.14.49.184")
    ip2 = net.ParseIP("216.14.49.191")
)

func main() {
    check := func(ip string) {
        trial := net.ParseIP(ip)
        res := check(trial, ip1, ip2)
        fmt.Printf("%v is %v within range %v to %v\n", trial, res, ip1, ip2)
    }
    check("1.2.3.4")
    check("216.14.49.185")
    check("216.14.49.191")
}
Nach dem Login kopieren

Ausgabe:

1.2.3.4 is false within range 216.14.49.184 to 216.14.49.191
216.14.49.185 is true within range 216.14.49.184 to 216.14.49.191
216.14.49.191 is true within range 216.14.49.184 to 216.14.49.191
Nach dem Login kopieren

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

Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage