检查IPV4是否合法可用

    技术2022-08-11  92

    bool isIPV4Valid(const std::string &szIpAddr) { int nLength = szIpAddr.length(); if( 7 > nLength || 15 < nLength ) //0.0.0.0 ~ 255.255.255.255,所以IP地址字符串长度应为7~15之间 return false; int nNum = -1; //记录IP中的字段值 int nCount = 0; //记录IP中‘.’的个数 for( int i = 0; i < nLength; i++) { if( '.' == szIpAddr.at(i) ) { if( -1 == nNum || 255 < nNum ) return false; //IP子段为空,不合法 (例: .0.0.0 , 1.0..0) ++nCount; nNum = -1; } else if( '0' <= szIpAddr.at(i) && '9' >= szIpAddr.at(i) ) { if( 0 == nNum ) return false; //IP子段以0开头,不合法 (例: 01.0.0.0 , 1.01.0.0) if( -1 == nNum ) nNum = szIpAddr.at(i) - '0'; else nNum = nNum * 10 + szIpAddr.at(i) - '0'; } else { return false; //IP中存在非法字符 } } //IP中‘.’的个数不为3,不合法 //末尾子段值不在0~255之间,不合法 if( 3 != nCount || 0 > nNum || 255 < nNum ) return false; return true; }
    Processed: 0.019, SQL: 9