输入一个字符串,判断是否是合法的IP地址或子网掩码
IP地址格式(不包括[])
[1-254].[0-254].[0-254].[0-254]子网掩码为前面是连续的1,然后全是0
转换成2进制是这样sample:11111111.11100000.00000000.00000000
10000000.00000000.00000000.00000000
11111111.11111111.11111111.10000000

解决方案 »

  1.   

    ps:ip地址和子网掩码可以分成2个方法来校验
      

  2.   

    public bool 检查IP(string IP)
    {
        string[] vList = IP.Split('.');
        if (vList.Length != 4) return false;
        for (int j = 0; j < vList.Length; j++)
        {
            int i;
            if (!int.TryParse(vList[j], out i)) return false;
            if ((i < 0) || (i > 254)) return false;
            if ((i == 0) && (j == 0)) return false;
        }
        return true;
    }public bool 检查掩码(string 掩码)
    {
        string[] vList = 掩码.Split('.');
        if (vList.Length != 4) return false;    bool vZero = false; // 出现0
        for (int j = 0; j < vList.Length; j++)
        {
            int i;
            if (!int.TryParse(vList[j], out i)) return false;
            if ((i < 0) || (i > 255)) return false;
            if (vZero) 
            {
                if (i != 0) return false;
            }
            else
            {
                for (int k = 7; k >= 0; k--)
                    if (((i >> k) & 1) == 0) // 出现0
                        vZero = true;
                    else if (vZero) return false; // 不为0
            }
        }
        return true;
    }private void button1_Click(object sender, EventArgs e)
    {
        MessageBox.Show(检查IP("1.0.0.127").ToString());
        MessageBox.Show(检查IP("261.0.0.127").ToString());
        MessageBox.Show(检查IP("0.0.0.127").ToString());
        MessageBox.Show(检查掩码("255.252.0.0").ToString());
        MessageBox.Show(检查掩码("255.0.0.1").ToString());
        MessageBox.Show(检查掩码("255.255.255.255").ToString());
    }