首页 > 其他 > 详细

IP地址判断有效性

时间:2015-01-07 15:00:50      阅读:293      评论:0      收藏:0      [点我收藏+]
#include "IPAddressValid.h"
#include <stdio.h>
#include <iostream>
using namespace std;

bool isOnePartValid(const char* cOnePartIPAddr, int len)//判断一个字段是不是合法
{
    if (NULL == cOnePartIPAddr || len <= 1)
    {
        return false;
    }
    if ('0' == cOnePartIPAddr[0] && 2 != len)//以0开头的字段不为0非法
    {
        return false;
    }
    int ipAddr =0;
    int iCur = 0;

    while ('\0' != cOnePartIPAddr[iCur])
    {
        if ('0'<= cOnePartIPAddr[iCur] && cOnePartIPAddr[iCur] <='9')
        {
            ipAddr = ipAddr*10 + cOnePartIPAddr[iCur]- '0';
        }
        else
        {
            return false;
        }
        iCur++;
    }
    if (ipAddr >= 0 && ipAddr <=255)
    {
        return true;
    }
    else
    {
        return false;
    }
}


bool isIPAddressValid(const char* pszIPAddr)
{
    // 请在此处实现
    if (NULL == pszIPAddr)
    {
        return false;
    }
    int l = strlen(pszIPAddr);
    if (l <7 || l > 15)
    {
        return false;
    }
    int iCur =0;
    int iIpLen =0;
    while (' ' == pszIPAddr[iCur])//去除前面空格
    {
        iCur++;
        iIpLen++;
    }
    int begin = iCur;
    while ('\0' != pszIPAddr[iCur])
    {
        iCur++;
        iIpLen++;
    }
    int end = iIpLen;
    for (int i = iIpLen-1 ; i >= begin; --i)//去除字符串尾部的空格
    {
        if (' ' == pszIPAddr[i])
        {
            end--;
        }
        else
        {
            break;
        }
    }
    char cOnePart[128];
    int count = 0;
    for (int i = begin; i <= end; i++)
    {
        memset(cOnePart, 0, sizeof(char) * 128);
        int iOnePartCur =0;
        int onePartLen =0;
        while (i < end && '.' != pszIPAddr[i])
        {
            cOnePart[iOnePartCur] = pszIPAddr[i];
            iOnePartCur++;
            i++;
            onePartLen++;
        }
        cOnePart[iOnePartCur] = '\0';
        onePartLen++;
        if (!isOnePartValid(cOnePart, onePartLen))
        {
            return false;
        }
        else
        {
            count ++;
        }
    }
    if (4 == count )
    {
        return true;
    }
    else
    {
        return false;
    }
}

int main()
{
    const char* pazIPAddress = "100.0.0.";

    bool isIP = isIPAddressValid(pazIPAddress);
    return 0;
}

IP地址判断有效性

原文:http://blog.csdn.net/xiaohanstu/article/details/42491569

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!