golang 获取内网IP.go
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了golang 获取内网IP.go相关的知识,希望对你有一定的参考价值。
// 获取内网IP V4, 获取失败时返回""
func InternalIpV4() string {
return internalIp(4)
}
// 获取内网IP V6, 获取失败时返回""
func InternalIpV6() string {
return internalIp(6)
}
// 有多块网卡时,只获取第一个IP
// n 4/6 表示ipv4/ipv6
func internalIp(n int) string {
addrs, err := net.InterfaceAddrs()
if err != nil {
return ""
}
for _, addr := range addrs {
if ipnet, ok := addr.(*net.IPNet); ok {
if !ipnet.IP.IsLoopback() { // not '127.0.0.1'
if n == 4 && ipnet.IP.To4() != nil {
//println("ip:", ipnet.IP.String())
return ipnet.IP.String()
} else if n == 6 && ipnet.IP.To16() != nil {
//println("ip:", ipnet.IP.String())
return ipnet.IP.String()
}
}
}
}
return ""
}
golang local_ip.go
// https://stackoverflow.com/questions/23558425/how-do-i-get-the-local-ip-address-in-go
package main
import (
"fmt"
"log"
"net"
)
/**
* GetOutboundIP return ip address
*/
func GetOutboundIP() net.IP {
conn, err := net.Dial("udp", "8.8.8.8:80")
if err != nil {
log.Fatal(err)
}
defer conn.Close()
localAddr := conn.LocalAddr().(*net.UDPAddr)
return localAddr.IP
}
以上是关于golang 获取内网IP.go的主要内容,如果未能解决你的问题,请参考以下文章
Golang gRPC实现内网穿透
golang爬坑:一个简单的http内网转发
golang 对特定域名根据内网域名是否可以访问返回特定的IP
外网如何获取内网的IP?
怎么实现c#获取ip内网,外网地址?
Linux搭建frp服务,实现内网穿透服务,实现外网到内网的在线访问