go 检测IP是否在给定的区间内
package main
import (
"bytes"
"fmt"
"net"
)
func main() {
fmt.Printf("check %s, result = %t\n", "192.167.101.0", checkIPRange("192.167.100.1", "192.168.101.3", "192.168.101.0"))
fmt.Printf("check %s, result = %t\n", "192.168.101.1", checkIPRange("192.167.100.1", "192.168.101.3", "192.168.101.1"))
fmt.Printf("check %s, result = %t\n", "192.168.101.2", checkIPRange("192.167.100.1", "192.168.101.3", "192.168.101.2"))
fmt.Printf("check %s, result = %t\n", "192.168.101.3", checkIPRange("192.167.100.1", "192.168.101.3", "192.168.101.3"))
fmt.Printf("check %s, result = %t\n", "192.167.90.3", checkIPRange("192.167.100.1", "192.168.101.3", "192.167.90.3"))
fmt.Printf("check %s, result = %t\n", "192.167.100.3", checkIPRange("192.167.100.1", "192.168.101.3", "192.167.100.3"))
}
func checkIPRange(start, end string, ip string) bool {
s := net.ParseIP(start)
e := net.ParseIP(end)
trial := net.ParseIP(ip)
if trial.To4() == nil {
return false
}
if bytes.Compare(trial, s) >= 0 && bytes.Compare(trial, e) <= 0 {
return true
}
return false
}
将ip转换为byte切片进行比较