From f913e480a26e4adfce0f17adb5e7790648dd83a1 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Fri, 8 Sep 2023 13:34:31 +0800 Subject: [PATCH] 1 --- local_ip.go | 33 --------------------------------- local_ip_test.go | 15 --------------- sysutils.go | 41 ++++++++++++++++++++++++++++++++++------- 3 files changed, 34 insertions(+), 55 deletions(-) delete mode 100644 local_ip.go delete mode 100644 local_ip_test.go diff --git a/local_ip.go b/local_ip.go deleted file mode 100644 index aa84660..0000000 --- a/local_ip.go +++ /dev/null @@ -1,33 +0,0 @@ -package q5 - -import ( - "fmt" - "net" -) - -func GetLocalIP() (string, error) { - interfaces, err := net.Interfaces() - if err != nil { - return "", err - } - for _, iface := range interfaces { - if iface.Flags&net.FlagUp == 0 || iface.Flags&net.FlagLoopback != 0 { - continue - } - addrs, err := iface.Addrs() - if err != nil { - return "", err - } - for _, addr := range addrs { - ipnet, ok := addr.(*net.IPNet) - if !ok || ipnet.IP.IsLoopback() { - continue - } - if ipnet.IP.To4() != nil { - return ipnet.IP.String(), nil - } - } - } - - return "", fmt.Errorf("无法获取本机有效的IP地址") -} diff --git a/local_ip_test.go b/local_ip_test.go deleted file mode 100644 index c4e5ca3..0000000 --- a/local_ip_test.go +++ /dev/null @@ -1,15 +0,0 @@ -package q5 - -import ( - "fmt" - "testing" -) - -func TestGetLocalIP(t *testing.T) { - ip, err := GetLocalIP() - if err != nil { - // 错误处理 - t.Errorf("local ip %v error:%s", ip, err) - } - fmt.Printf("local ip:[%s]\n", ip) -} diff --git a/sysutils.go b/sysutils.go index 36a1eb4..66e21ea 100644 --- a/sysutils.go +++ b/sysutils.go @@ -131,12 +131,8 @@ func FormatUnixDateEx(sec int64) string { return strTime } -const ( - maxBitNum = 63 // 最大的有效位号,根据 int64 的位宽确定 -) - func HasBitFlag(val int64, bitNum int32) bool { - if bitNum < 0 || bitNum > maxBitNum { + if bitNum < 0 || bitNum > 63 { return false } mask := int64(1) << bitNum @@ -144,15 +140,46 @@ func HasBitFlag(val int64, bitNum int32) bool { } func SetBitFlag(val *int64, bitNum int32) { - if bitNum < 0 || bitNum > maxBitNum { + if bitNum < 0 || bitNum > 63 { return } *val |= int64(1) << bitNum } func UnSetBitFlag(val *int64, bitNum int32) { - if bitNum < 0 || bitNum > maxBitNum { + if bitNum < 0 || bitNum > 63 { return } *val &= ^(int64(1) << bitNum) } + +func GetLocalIP() string { + interfaces, err := net.Interfaces() + if err != nil { + panic(err) + } + ipList := []string{} + for _, iface := range interfaces { + if iface.Flags&net.FlagUp == 0 || iface.Flags&net.FlagLoopback != 0 { + continue + } + addrs, err := iface.Addrs() + if err != nil { + panic(err) + } + for _, addr := range addrs { + ipnet, ok := addr.(*net.IPNet) + if !ok || ipnet.IP.IsLoopback() { + continue + } + if ipnet.IP.To4() != nil { + ipList = append(ipList, ipnet.IP.String()) + } + } + } + if len(ipList) != 1 { + panic("GetLocalIP error") + } else { + return ipList[0] + } +}