> 백엔드 개발 > Golang > Go/GoLang에서 IP 범위를 효율적으로 검증하는 방법은 무엇입니까?

Go/GoLang에서 IP 범위를 효율적으로 검증하는 방법은 무엇입니까?

DDD
풀어 주다: 2024-11-13 06:44:02
원래의
828명이 탐색했습니다.

How to Efficiently Validate IP Ranges in Go/GoLang?

Go/GoLang의 효율적인 IP 범위 유효성 검사

IP 주소가 지정된 범위 내에 속하는지 확인하는 것은 네트워킹 애플리케이션의 일반적인 요구 사항입니다. Go/GoLang에서는 IP 주소의 고유한 숫자 표현을 사용하여 이를 효율적으로 달성할 수 있습니다.

IP 주소를 표현하기 위해 Go는 빅엔디안 바이트 슬라이스를 활용하여 bytes.Compare를 사용한 편리한 비교 방법을 제공합니다. 이 접근 방식을 사용하면 문자열 구문 분석이나 복잡한 정규 표현식이 필요하지 않습니다.

216.14.49.184~216.14.49.191로 정의된 IP 범위를 생각해 보세요. 216.14.49.185와 같은 입력 IP 주소가 이 범위에 속하는지 확인하려면 다음 코드를 활용할 수 있습니다.

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")
}
로그인 후 복사

이 스크립트는 다음을 사용하여 IP 주소를 확인하고 분류하여 이 접근 방식의 효율성을 보여줍니다. 용이성:

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
로그인 후 복사

결론적으로 이 방법은 네트워킹 애플리케이션을 위한 귀중한 도구인 Go/GoLang의 지정된 범위에 대해 IP 주소를 검증하는 간편하고 효율적인 수단을 제공합니다.

위 내용은 Go/GoLang에서 IP 범위를 효율적으로 검증하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿