当前位置:  开发笔记 > 编程语言 > 正文

在Golang获取公共IP

如何解决《在Golang获取公共IP》经验,为你挑选了1个好方法。

我们如何在golang中获取公共IP?方法req.Header.Get("X-Forwarded-For")返回IP数组.我们如何确定哪一个是公开的,哪个是内部的?有没有其他方法来获取公共(外部)IP?



1> Sarath Sadas..:

以下IP块保留用于专用IP地址.

Class        Starting IPAddress    Ending IP Address    # of Hosts
A            10.0.0.0              10.255.255.255       16,777,216
B            172.16.0.0            172.31.255.255       1,048,576
C            192.168.0.0           192.168.255.255      65,536
Link-local-u 169.254.0.0           169.254.255.255      65,536
Link-local-m 224.0.0.0             224.0.0.255          256
Local        127.0.0.0             127.255.255.255      16777216

您可以编写一个函数来检查ip是否属于这些

这是尝试做同样的事情,下面的代码不处理ipv6请根据需要添加

func IsPublicIP(IP net.IP) bool {
    if IP.IsLoopback() || IP.IsLinkLocalMulticast() || IP.IsLinkLocalUnicast() {
        return false
    }
    if ip4 := IP.To4(); ip4 != nil {
        switch {
        case ip4[0] == 10:
            return false
        case ip4[0] == 172 && ip4[1] >= 16 && ip4[1] <= 31:
            return false
        case ip4[0] == 192 && ip4[1] == 168:
            return false
        default:
            return true
        }
    }
    return false
}

这是播放链接

推荐阅读
手机用户2502851955
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有