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;
}
检查IPV4是否合法可用
最新推荐文章于 2024-04-11 09:05:02 发布