C++判断ip是否为保留ip
来源:互联网 发布:淘宝联盟的优惠券在哪 编辑:程序博客网 时间:2024/06/02 06:17
bool isReservedIp(const char *ip){ static const char *address_blocks[] = { "0.0.0.0/8", "10.0.0.0/8", "100.64.0.0/10", "127.0.0.0/8", "169.254.0.0/16", "172.16.0.0/12", "192.0.0.0/24", "192.0.2.0/24", "192.88.99.0/24", "192.168.0.0/16", "198.18.0.0/15", "198.51.100.0/24", "203.0.113.0/24", "224.0.0.0/4", "240.0.0.0/4", "255.255.255.255/32" }; static const int blk_nums = sizeof(address_blocks) / sizeof(*address_blocks); static __thread char buf[40]; for (int i = 0; i < blk_nums; ++i) { strncpy(buf, address_blocks[i], sizeof(buf)); char *pos = strchr(buf, '/'); assert(pos != NULL); *pos = '\0'; uint32_t val = ntohl(inet_addr(buf)); // little endian uint32_t msk = atoi(pos + 1); uint32_t offset = 32 - msk; uint32_t tar = ntohl(inet_addr(ip)); if ((val >> offset) == (tar >> offset)) return true; } return false;}bool isReservedIp(uint32_t ip) // little endian{ static const char *address_blocks[] = { "0.0.0.0/8", "10.0.0.0/8", "100.64.0.0/10", "127.0.0.0/8", "169.254.0.0/16", "172.16.0.0/12", "192.0.0.0/24", "192.0.2.0/24", "192.88.99.0/24", "192.168.0.0/16", "198.18.0.0/15", "198.51.100.0/24", "203.0.113.0/24", "224.0.0.0/4", "240.0.0.0/4", "255.255.255.255/32" }; static const int blk_nums = sizeof(address_blocks) / sizeof(*address_blocks); static __thread char buf[40]; for (int i = 0; i < blk_nums; ++i) { strncpy(buf, address_blocks[i], sizeof(buf)); char *pos = strchr(buf, '/'); assert(pos != NULL); *pos = '\0'; uint32_t val = ntohl(inet_addr(buf)); // little endian uint32_t msk = atoi(pos + 1); uint32_t offset = 32 - msk; if ((val >> offset) == (ip >> offset)) return true; } return false;}
0 0
- C++判断ip是否为保留ip
- 判断ip是否为保留ip
- 判断IP是否为内网IP
- 判断是否为IP地址
- 判断是否为IP地址
- 判断是否为IP的正则表达式
- 判断字符串是否为IP地址。
- Java 判断 String 是否为合法IP
- JS 判断是否为IP格式
- c# 判断字符串是否为IP地址
- 判断字符串是否为IP地址
- 判断字符串是否为IP地址
- 判断IP 字符串是否为有效地址
- 判断字符串是否为合法ip
- 判断IP地址是否为公有地址
- Cpp判断是否为局域网IP
- 判断IP地址是否为内网IP地址
- 判断IP地址是否为内网IP地址
- 关于 mac 下轻松 反编译安卓apk
- Swift3.0 代理传值,属性传值
- OpenCV与matlab部分函数的对应关系
- 简述cookies和session的区别
- Android 系统字体大小影响UI显示问题
- C++判断ip是否为保留ip
- JFace中Dialog类的使用方法
- JAVA使用jsoup技术实现网站URL解析爬取|爬取网站登陆后页面动态数据
- expdp与impdp参数用法
- R语言 柱状图与折线图 趋势图 highcharter (hc_yAxis_multiples)图
- spring+springmvc+mybatis整合
- mysql之数据处理函数与数据汇总函数
- Java 基础知识总结
- Yii2框架bootstrap样式理解