• 将IP地址转换为地方名称


    下面这段代码将IP地址转换为地方名称,例如你的IP地址为 “58.24.25.65” 则显示为 “上海徐汇区”
    当然转换过程中,需要有数据库,也就是这里适用的数据库是动网论坛最新版本DVBBS8.1提供的数据库,你可以到dvbbs下载那个论坛,然后在data目录下找到
    ipaddress数据库文件,其中ip1和ip2对应ip地址的范围


    这里介绍如何转换,它使用的是IP地址是10进制的,简单说一下IP原理,(以下均为假设)例如www.sohu.com 对应的IP地址为
    12.24.10.45
    首先将IP转换为二进制
    0000 1000 . 0001 1000 . 0000 1010 .  0010 1101
    然后转换为十六进制
    0B. 18. 0A.2C
    然后去掉小数点
    0b180a2c
    然后转换为十进制就可以了,代码如下

    <%@ Page Language="C#" %>
    <%@ Import  Namespace="System.Data.OleDb"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

    <script runat="server">

        protected void Page_Load(object sender, EventArgs e)
        {


            string Ip =Request.UserHostAddress;
            string[] Ip_List = Ip.Split(".".ToCharArray());
            string X_Ip = "";
            foreach (string ip in Ip_List)
            {
                string tmp = Convert.ToInt16(ip).ToString("x");
                           X_Ip += tmp;
            }
            long num = long.Parse(X_Ip, System.Globalization.NumberStyles.HexNumber);


            string aConnStr = "Provider = Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("ipaddress.mdb");
            System.Data.OleDb.OleDbConnection con = new System.Data.OleDb.OleDbConnection(aConnStr);
            System.Data.OleDb.OleDbCommand cmd = new OleDbCommand();
            cmd.Connection = con;
            con.Open();
            cmd.CommandText = "select top 1 country,city from dv_address where ip1 <=" + num + " and ip2 >=" + num;
            string result = cmd.ExecuteScalar().ToString();
            con.Close();
            Response.Write(result);
        }
      
    </script>

    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title>Untitled Page</title>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
       
        </div>
        </form>
    </body>
    </html>



    有了127.0.0.1对应但是2130706433 ,所以你ping 127.0.0.1和ping 2130706433 效果是一样的
    可能有人说为什么不直接转换,因为直接转换需要取位,很麻烦
    测试结果:
    首先准备一个IP。例如在控制台里输入cmd,然后跟中一个网站,例如
     tracert http://www.cnblogs.com
    可以得到它的IP为  219.232.228.156
    然后你可以到 http://www.ip138.com/ 查询其对应的地址
    然后在适用上面程序进行验证是否正确。
    在适用上面代码时,请注意下载需要数据库。(可以到动网论坛里下载 www.dvbbs.net)
  • 相关阅读:
    linux Chrome 安装
    jQuery.extend 函数详解
    Ubuntu Linux 下文件名乱码(无效的编码)的快速解决办法
    Django——model字段类型 2
    Django 中的用户认证
    Expression<Func<T, bool>>与Func<T, bool>的区别
    根据funID,personID获取最新规划包项目相关信息
    SET ANSI_NULLS ON 在T-SQL中是什么意思
    SQL Server 2008中如何为XML字段建立索引
    PowerDesigner 建模后如何导入到数据库
  • 原文地址:https://www.cnblogs.com/mqingqing123/p/1007264.html
Copyright © 2020-2023  润新知