您的位置:首页 > 其它

通过IP地址获取归属地的最简单的方法[转]

2010-10-20 16:18 435 查看
通过访客的IP地址,根据QQ的纯真IP库,通过封装库快速获取归属地信息。先把IPLocation.dll文件添加引用到你的项目,然后把qqwry.dat 文件放在合适的目录,我的放在App_Data里。很多朋友会问:“IP库的更新怎么办?”,这个好办..
1、===================================
首先得先下载两个文件;
IPLocation.dll[IP库操作封装],qqwry.dat[IP库文件] 这两个文件在示例源码里都可以找到。
通过访客的IP地址,根据QQ的纯真IP库,通过封装库快速获取归属地信息。

关键操作:
先把IPLocation.dll文件添加引用到你的项目,然后把
qqwry.dat 文件放在合适的目录,我的放在App_Data里。
以下是调用:


/// <summary>
/// 根据IP地址 返回所在地区名称 我把该函数放在一个类文件里,方便随处调用
/// </summary>
/// <param name="strIP">IP地址</param>
/// <param name="page">页面Page对象</param>
/// <returns></returns>
public static string GetNameByIP(string strIP, System.Web.UI.Page page)
{
string strName = "未知区域";
if (!string.IsNullOrEmpty(strIP))
{
try
{
string ConIPData = page.Server.MapPath("~/App_Data/qqwry.dat");
strName = IPLocation.IPLocation.IPLocate(ConIPData, strIP.Trim());
}
catch (Exception ex)
{
throw ex;
}
}
return strName.Trim();
}

/// <summary>        /// 根据IP地址 返回所在地区名称        /// </summary>        /// <param name="strIP"></param>        /// <param name="page"></param>        /// <returns></returns>        public static string GetNameByIP(string strIP, System.Web.UI.Page page)        {            string strName = "未知区域";            if (!string.IsNullOrEmpty(strIP))            {                try                {                    string ConIPData = page.Server.MapPath("~/App_Data/qqwry.dat");                    strName = IPLocation.IPLocation.IPLocate(ConIPData, strIP.Trim());                }                catch (Exception ex)                {                    throw ex;                }            }            return strName.Trim();        }        /// <summary>        /// 取得IP地址        /// </summary>        /// <returns></returns>        public static string GetIp()        {            string str = "";            //穿过代理服务器取远程用户真实IP地址:            if (System.Web.HttpContext.Current.Request.ServerVariables["HTTP_VIA"] != null)                str = System.Web.HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"].ToString();            else                str = System.Web.HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"].ToString();            return str;        }


该IP库文件有7M多之大,不知各位有没有办法给压缩下,望指教,谢谢。

示例源码:
点击下载
很多朋友会问:“IP库的更新怎么办?”,这个好办,下载以下软件,定期【腾讯5天一更新】更新IP库文件,上传到你的网站上覆盖即可。

IP库更新软件:点击下载

2、========================================

群里有朋友提供了一个更简便的方法:
调用腾讯的接口:
腾讯的ip接口地址:http://fw.qq.com/ipaddress


请求这个接口会返回一个变量的声明 如:var IPData = new Array("120.1.85.112","","河北省","石家庄市");

调用的时候:<script type=text/javascript>document.write(IPData[3]);</script> 结果:石家庄市

原文:http://skinok.cn/ASPNET/78.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: