将识别有效IPv4地址的算法

时间:2017-12-29 01:52:10

标签: c# ip

我必须编写一个算法来识别点十进制格式的有效IPv4地址。如果IP由四个八位字节组成,则应视为有效,其中0到255(包括)之间的值也为零(例如01.02.03.04)被认为无效。

public static bool is_valid_IP(string IpAddres)
{
    string[] adress = IpAddres.Split('.');

    if (adress.Length!=4)
    {
        return false;
    }

    for (int i = 0; i < 4; i++)
    {
        int result;
        if (adress[i][0]=='0')
        {
            return false;
        }
        if (!int.TryParse(adress[i], out result))
        {
            return false;
        }
        if (result >255)
        {
            return false;
        }
    }


    return true;
}

它确实适用于我尝试的所有IP,但我学校的测试(不知道它们是什么)说它错了。有人能指出我做错了吗?

4 个答案:

答案 0 :(得分:2)

0.0.0.0 is a valid IP addressthe following will reject it

if (adress[i][0]=='0')
{
    return false;
}

答案 1 :(得分:1)

为什么不使用IPAddress类来解析它?

IPAddress address = IPAddress.Parse(ipAddress);

https://msdn.microsoft.com/en-us/library/system.net.ipaddress.parse(v=vs.110).aspx

答案 2 :(得分:0)

我非常确定您的解析器会说双位或单位负ips是有效的。

答案 3 :(得分:0)

你需要检查前导零,如果它存在则返回false,你的测试只检查前0,如果测试是001.002.003.4,它将失败,使用 if (adress.StartsWith("0"))但排除0.0.0.0

您还需要检查负数,使用TryParse的结果