zoukankan      html  css  js  c++  java
  • 刚刚找到的IP地址对应地区数据库

       项目原因,网上下载了 We7 CMS安装版,(想下载源码竟然发现要加入什么什么源码小组,还要一年交¥100,晕,这叫什么GP开源啊!!!),下载下来看了下app_data目录,惊奇发现有个ip.db,呵呵,我猜可能是IP地址数据库了,而且是sqlite的,打开一看:

    嘿嘿 ,果然是IP地址数据库,而且都转成长IP格式的了,自己写了个aspx页面来获取IP的:
    http://5mdn.com/getip.aspx

    给网上的人测试发现其实这个IP数据库也不是很完全的,算了,不管了,先记下来吧,下面是aspx.cs的代码:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Text.RegularExpressions;
    using System.Data;
    using System.Data.SQLite;

    public partial class test : System.Web.UI.Page
    {
        
    protected void Page_Load(object sender, EventArgs e)
        {
            
    string ip = Request.UserHostAddress;
            
    string longip = IpToLong(ip).ToString();
            litmes.Text 
    = "<h3>您的IP:" + ip + "</h3>";
            litmes.Text 
    += "<h3>转换后的IP:" + longip + "</h3>";
            litmes.Text 
    += "<h4>从IP数据库中取出的记录:</h4>";

            SQLiteConnection conn 
    = null;
            SQLiteCommand cmd 
    = null;
            SQLiteDataReader sdr 
    = null;

            
    string connStr = "Data Source=" + HttpContext.Current.Server.MapPath("~/App_Data/ip.db");
            conn 
    = new SQLiteConnection(connStr);
            conn.Open();
            
    string sql = "SELECT * FROM iptocity where " + longip + " between ip_start and ip_end";
            cmd 
    = new SQLiteCommand(sql, conn);
            DataTable dt 
    = new DataTable();
            
    using (sdr = cmd.ExecuteReader(CommandBehavior.CloseConnection))
            {
                dt.Load(sdr);
            }
            GridView1.DataSource 
    = dt;
            GridView1.DataBind();
        }

        
    // 把IP地址转成长数字,
        
    // 算法:128.125.1.24 → (128*256*256*256) + (125*256*256) + (1*256) +24
        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;
            }
        }

    }
    相关文件下载:点击下载


    撸码:复制、粘贴,拿起键盘就是“干”!!!
  • 相关阅读:
    搜索回车跳转页面
    登录验证码
    【排序算法】排序算法之插入排序
    PAT 乙级 1044 火星数字 (20 分)
    PAT 甲级 1035 Password (20 分)
    PAT 甲级 1041 Be Unique (20 分)
    PAT 甲级 1054 The Dominant Color (20 分)
    PAT 甲级 1027 Colors in Mars (20 分)
    PAT 甲级 1083 List Grades (25 分)
    PAT 甲级 1005 Spell It Right (20 分)
  • 原文地址:https://www.cnblogs.com/niunan/p/1758648.html
Copyright © 2011-2022 走看看