自己写的一个判定字符串是不是IP地址的方法(= =!漏洞一堆,有待完善。。。)

来源:互联网 发布:2017淘宝宝贝排名规则 编辑:程序博客网 时间:2024/04/28 10:59

using System;

using System.Collections.Generic;

using System.Text;


namespace IsIpAddress

{

    class IsIp

    {

        /// <summary>

        /// 判定字符串是否是IP地址

        /// </summary>

        /// <param name="Ip">要判定的字符串</param>

        /// <param name="AndPort">有没有包含端口</param>

        /// <returns>是不是IP地址</returns>

        public static  Boolean IsIpAddress(string Ip,bool AndPort)

        {

            int n = 0;//下面代码收集True的计数器

            int all = 0;//当计数器达到什么值时,返回True

            int max_l = 16;//字符串的最大值,超过后返回False

            if (AndPort)//判断有没有带端口

            {

                max_l = 22; //有则改变字符串的最大值

            }

            if (Ip.Length < max_l )//判断字符串是否超过最大值,超过直接返回False

            {

                if (Ip.IndexOf(".") < 4 && Ip.IndexOf(".") > 0)//搜索字符串中第一个“.”的位置,如果小于4计数器加一

                {

                    n++;

                }

                Ip = Ip.Substring(Ip.IndexOf(".") + 1);//截取第一个“.”之后的字符串

                if (Ip.IndexOf(".") < 4 && Ip.IndexOf(".") > 0)//搜索第二个“.”......

                {

                    n++;

                }

                Ip = Ip.Substring(Ip.IndexOf(".") + 1);//截取第二个“.”......

                if (Ip.IndexOf(".") < 4 && Ip.IndexOf(".") > 0)//搜索第三个“.”......

                {

                    n++;

                }

                Ip = Ip.Substring(Ip.IndexOf(".") + 1);//截取第三个“.”......

                all = 3;//设置计数器达到什么值返回True

                if (AndPort)//如果字符串带有端口则执行下面代码

                {

                    if (Ip.IndexOf(":") < 4 && Ip.IndexOf(":") > 0)//搜索字符串中“:”的位置,如果小于4计数器加一

                    {

                        n++;

                    }

                    Ip = Ip.Substring(Ip.IndexOf(":") + 1);//截取“:”之后的字符串(端口)

                    all = 5;//重新设置计数器返回True的值

                    if (Ip.Length < 6)//截取后的字符串(端口)小于6的话计数器加一

                    {

                        n++;//计数器加一

                    }

                }

                

                if (n == all)//计数器等于要求的值时返回True,否则返回False

                {

                    return true;

                }

                else

                {

                    return false;

                }

            }

            else

            {

                return false;

            }

        }

    }

}