C# 根据IP查询地址归属地

必备文件:IPLocation.dll、QQWry.Dat

下载地址:http://pan.baidu.com/s/1jG1dlOy

(可百度下载

 

       之前有过将 QQWry.Dat 转为 Access 格式,在 asp/asp.net开发中通过简单算法去查询,缺点是 IP 数据库体积变大。现在有了更简单的方法:

       1,下载 IPLocation.dll,将它放在网站的 Bin 目录下,将 QQWry.Dat 放在网站的任何位置(一般为 App_Data 目录)。刷新解决方案管理器。

       2,在使用的页面加入引用

using IPLocation;

       或者在 web.config 文件中,节点system.web -> pages -> controls 添加

       3,调用方法:

Label1.Text = IPLocation.IPLocation.IPLocate(Server.MapPath("~/App_Data/QQWry.Dat"), TextBox1.Text.Trim());

       方法 IPLocate() 参数一为 QQWry.Dat 路径,参数二为 IP 地址,返回 IP 归属地。

       够简单吧,补充一点,在 VS2003 需要在项目中添加 IPLocation.dll 的引用。

       封装类里面已经屏蔽了纯真IP数据库里面的 "CZ88.NET"字样。

       不过同样有很烦的一点,纯真IP里面数据过长,往往一个地址有20多个字符,这在WEB开发过程中不能很好的控制用户所在地字符串长度。比如:

       ”59.45.84.2      59.45.84.2      辽宁省本溪市明山区 纵横e空间(地工路博林小区大门右侧10米/辽宁冶金技师学院正门对面19路终点站旁边)“

       ”60.207.91.111   60.207.91.111   北京市房山区理工大学对面尚学城网吧 111号机“

       所以我们可以通过以下方法函数把用户所在地精简到省,市:

public static string GetIPaddress(string _IP)
{
        if (_IP.IndexOf("市") >= 0)
        {
            int v1 = Convert.ToInt32(_IP.IndexOf("市")) + 1;
            _IP = _IP.Substring(0, v1);
            return _IP;
        }
        else if (_IP.IndexOf("省") >= 0 && _IP.IndexOf("市") <= 0)
        {
            int v2 = Convert.ToInt32(_IP.IndexOf("省")) + 1;
            _IP = _IP.Substring(0, v2);
            return _IP;
        }
        else if (_IP.IndexOf("哈尔滨") >= 0)
        {
            return"哈尔滨";
        }
        else if (_IP.IndexOf("香港") >= 0)
        {
            return "香港";
        }
        else if (_IP.IndexOf("台湾") >= 0)
        {
            return "台湾省";
        }
        return _IP;
}

转自:http://www.wlcrane.com/article.aspx?arid=12

转载于:https://www.cnblogs.com/iwin9999/p/3850716.html

你可能感兴趣的:(C# 根据IP查询地址归属地)