繁体   English   中英

识别有效IPv4地址的算法

[英]Algorithm that will identify valid IPv4 addresses

我必须编写一种算法,以点十进制格式标识有效的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,但是我学校的测试(不知道它们是什么)却说这是错误的。 有人可以指出我做错了什么吗?

0.0.0.0是有效的IP地址但以下内容将拒绝它

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

为什么不使用IPAddress类进行解析?

IPAddress address = IPAddress.Parse(ipAddress);

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

我很确定您的解析器会说两位或一位负IP是有效的。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM