如何判断IP地址是否在某个IP段中

来源:互联网 发布:淘宝客服评价系统 编辑:程序博客网 时间:2024/05/16 04:39

sql如何判断IP地址是否在某个IP段中

环境sqlserver 2008 R2


1.我的表结构

II_Id  标识

II_StartIP     开始ip

II_EndIP      结束ip

SI_Id            学校id

II_State        ip状态是否检查过 这是我在程序里使用的

表名IPInfo


2.创建获取ip函数

CREATE   FUNCTION GetIP(@ip varchar(20))
RETURNS varchar(20)
AS
BEGIN
    DECLARE @IPre varchar(20)
     
    SET @IPre=''
    IF ISnumeric(parsename(@ip,4))=1
        SET @IPre=RIGHT('000'+parsename(@ip,4),3)+'.'
    IF ISnumeric(parsename(@ip,3))=1
        SET @IPre=@IPre+RIGHT('000'+parsename(@ip,3),3)+'.'
    ELSE 
        SET @IPre=@IPre+'%'+'.'
    IF ISnumeric(parsename(@ip,2))=1
        SET @IPre=@IPre+RIGHT('000'+parsename(@ip,2),3)+'.'
    ELSE 
        SET @IPre=@IPre+'%'+'.'
    IF iSnumeric(parsename(@ip,1))=1
        SET @IPre=@IPre+RIGHT('000'+parsename(@ip,1),3)
    ELSE 
        SET @IPre=@IPre+'%'
 
     
    RETURN @IPre
END


3.查询测试

SELECT TOP 1000 [II_Id]
      ,[II_StartIP]
      ,[II_EndIP]
      ,[SI_Id]
      ,[II_State]
  FROM [IPInfo]
  where GetIP('218.7.49.25') between GetIP(II_StartIP) and GetIP(II_EndIP)



asp.net如何判断IP地址是否在某个IP段中

我的开发语言是asp.net(c#),下面我介绍一个我在asp.net中如何判断IP地址是否在某个IP段中

环境.net4.0  工具vs2010

1.ip的计算方法

 /// <summary>
        /// 分割IP 
        /// </summary>
        /// <param name="ipAddress">IP地址</param>
        /// <returns></returns>
        private long getIpNum(String ipAddress)
        {
            String[] ip = ipAddress.Split(new char[] { '.' });
            long a = int.Parse(ip[0]);
            long b = int.Parse(ip[1]);
            long c = int.Parse(ip[2]);
            long d = int.Parse(ip[3]);


            return a * 256 * 256 * 256 + b * 256 * 256 + c * 256 + d;
        }
        /// <summary>
        /// 判断客户端的IP是否在某个ip段中  
        /// </summary>
        /// <param name="clientIp">客户端的IP</param>
        /// <param name="begin">开始IP</param>
        /// <param name="end">结束IP</param>
        /// <returns></returns>
        private bool isInner(long clientIp, long begin, long end)
        {
            return (clientIp >= begin) && (clientIp <= end);
        }  

2.测试

protected void Page_Load(object sender, EventArgs e)
        {   
            //获取客户端ip地址
            //Response.Write(Request.UserHostAddress);
            //调用方法
            long ip = getIpNum("218.7.49.25");
            long start_ip = getIpNum("218.7.49.1");
            long end_ip = getIpNum("218.7.49.127");


            if (isInner(ip, start_ip, end_ip))
            {
                Response.Write("是");
            }
            else
            {
                Response.Write("不是");
            }
        }




0 0
原创粉丝点击