c/c++语言开发共享是否有库函数来确定IP地址(IPv4和IPv6)在C / C ++中是私有/本地的?

1,给定一个32位整数值,如何准确判断它是否是私有IPv4地址。

2,给定一个128位整数值,如何准确判断它是否是私有IPv6地址。

考虑不同平台上IP地址的字节顺序,每次都要编写这样一个常见的小函数是容易出错的。 所以我认为应该有一个库函数,有吗?

    这将帮助您入门。 我没有打扰包括“链接本地”地址范围,但这是一个练习,您可以通过修改下面的代码来完成。

    IPV6略有不同。 由于大多数系统没有本机128位类型,因此您的问题稍有不完整。 IPv6地址通常包含在sockaddr_in6结构中的16字节数组中。

    完成此示例所需的一切都在此处链接 。

    // assumes ip is in HOST order. Use ntohl() to convert as approrpriate bool IsPrivateAddress(uint32_t ip) { uint8_t b1, b2, b3, b4; b1 = (uint8_t)(ip >> 24); b2 = (uint8_t)((ip >> 16) & 0x0ff); b3 = (uint8_t)((ip >> 8) & 0x0ff); b4 = (uint8_t)(ip & 0x0ff); // 10.xyz if (b1 == 10) return true; // 172.16.0.0 - 172.31.255.255 if ((b1 == 172) && (b2 >= 16) && (b2 <= 31)) return true; // 192.168.0.0 - 192.168.255.255 if ((b1 == 192) && (b2 == 168)) return true; return false; } 

      以上就是c/c++开发分享是否有库函数来确定IP地址(IPv4和IPv6)在C / C ++中是私有/本地的?相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/562565.html

      (0)
      上一篇 2021年2月5日
      下一篇 2021年2月5日

      精彩推荐