///publicstaticulongIpToLong(stringip){try{string[]cip=ip.Trim().Spl" />

获取最新的IP数据库及如何查询

系统 1910 0



.NET中把IP地址转为长整型的方法:
    
    /// <summary>把IP地址转成长数字,
    /// 算法:128.125.1.24 → (128*256*256*256) + (125*256*256) + (1*256) +24
    /// </summary>
    /// <param name="ip"></param>
    /// <returns></returns>
    public static ulong IpToLong(string ip)
    {
        try
        {
            string[] cip = ip.Trim().Split('.');
            string[] aip = new string[4];
            cip.CopyTo(aip, 0);
            if (cip.Length < 3)
            {
                for (int i = 3; i > cip.Length; i--)
                {
                    aip[i] = "0";
                }
            }
            uint[] iip = new uint[4];
            Regex reg = new Regex(@"\d+");
            for (int x = 0; x < aip.Length; x++)
            {
                if (reg.IsMatch(aip[x]))
                    iip[x] = Convert.ToUInt32(aip[x]);
                else
                    iip[x] = 0;
            }
            ulong uip = Convert.ToUInt64(256 * 256 * 256 * iip[0] + 256 * 256 * iip[1] + 256 * iip[2] + iip[3]);
            return uip;
        }
        catch (Exception ess)
        {
            throw ess;
        }
    }

  


我用自己的机器试,一开始就一下更新所有,结果搞到网页超时,后来就通过SQL语句的TOP先把一部分取出来更新好后再更新另一部分,SQL语句如下:
    
select top 100 * from ipdata where  CHARINDEX('.',starip,0)>0

  

CHARINDEX函数是MSSQL的内置函数,类似于IndexOf。

更新好后询查就可以把要查询的IP转成长整形,然后通过SQL中的BETWEEN..AND..来查询了。
    
select * from ipdata where @ip between starip and endip

  


如果不把IP转成长整型的话则查询出来的会有问题的!!!

获取最新的IP数据库及如何查询


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论