亚洲综合原千岁中文字幕_国产精品99久久久久久久vr_无码人妻aⅴ一区二区三区浪潮_成人h动漫精品一区二区三

主頁 > 知識庫 > ASP.NET實現根據IP獲取省市地址的方法

ASP.NET實現根據IP獲取省市地址的方法

熱門標簽:浦發電話機器人提醒還款 電銷語音機器人型號參數 400電話如何申請取消 柳州電銷機器人公司 征途美甲店地圖標注 太原400電話上門辦理 昆明語音電銷機器人價格 百度地圖怎樣做地圖標注 騰訊地圖標注手機

本文實例講述了ASP.NET實現根據IP獲取省市地址的方法,分享給大家供大家參考。具體實現方法如下:

1、在網站的跟路徑下面添加QQWry.dat(點擊此處本站下載https://www.jb51.net/softs/10529.html)文件,這個文件是IP數據庫文件

2、添加以下一個類 IPScanner

復制代碼 代碼如下:
public class IPScanner
{
        //私有成員#region 私有成員
        private string dataPath;
        private string ip;
        private string country;
        private string local;

        private long firstStartIp = 0;
        private long lastStartIp = 0;
        private FileStream objfs = null;
        private long startIp = 0;
        private long endIp = 0;
        private int countryFlag = 0;
        private long endIpOff = 0;
        private string errMsg = null;


        //構造函數#region 構造函數
        public IPScanner()
        {
            this.dataPath = System.Web.HttpContext.Current.Server.MapPath("/ipdata/QQWry.dat");
        }

        //公共屬性#region 公共屬性
        public string DataPath
        {
            set { dataPath = value; }
        }
        public string IP
        {
            set { ip = value; }
        }
        public string Country
        {
            get { return country; }
        }
        public string Local
        {
            get { return local; }
        }
        public string ErrMsg
        {
            get { return errMsg; }
        }

        //搜索匹配數據#region 搜索匹配數據
        private int QQwry()
        {
            string pattern = @"(((\\d{1,2})|(1\\d{2})|(2[0-4]\\d)|(25[0-5]))\\.){3}((\\d{1,2})|(1\\d{2})|(2[0-4]\\d)|(25[0-5]))";
            Regex objRe = new Regex(pattern);
            Match objMa = objRe.Match(ip);
            if (!objMa.Success)
            {
                this.errMsg = "IP格式錯誤";
                return 4;
            }

            long ip_Int = this.IpToInt(ip);
            int nRet = 0;
            if (ip_Int >= IpToInt("127.0.0.0") ip_Int = IpToInt("127.255.255.255"))
            {
                this.country = "本機內部環回地址";
                this.local = "";
                nRet = 1;
            }
            else if ((ip_Int >= IpToInt("0.0.0.0") ip_Int = IpToInt("2.255.255.255")) || (ip_Int >= IpToInt("64.0.0.0") ip_Int = IpToInt("126.255.255.255")) || (ip_Int >= IpToInt("58.0.0.0") ip_Int = IpToInt("60.255.255.255")))
            {
                this.country = "網絡保留地址";
                this.local = "";
                nRet = 1;
            }
            objfs = new FileStream(this.dataPath, FileMode.Open, FileAccess.Read);
            try
            {
                objfs.Position = 0;
                byte[] buff = new Byte[8];
                objfs.Read(buff, 0, 8);
                firstStartIp = buff[0] + buff[1] * 256 + buff[2] * 256 * 256 + buff[3] * 256 * 256 * 256;
                lastStartIp = buff[4] * 1 + buff[5] * 256 + buff[6] * 256 * 256 + buff[7] * 256 * 256 * 256;
                long recordCount = Convert.ToInt64((lastStartIp - firstStartIp) / 7.0);
                if (recordCount = 1)
                {
                    country = "FileDataError";
                    objfs.Close();
                    return 2;
                }
                long rangE = recordCount;
                long rangB = 0;
                long recNO = 0;
                while (rangB rangE - 1)
                {
                    recNO = (rangE + rangB) /2;
                    this.GetStartIp(recNO);
                    if (ip_Int ==this.startIp)
                    {
                        rangB = recNO;
                        break;
                    }if (ip_Int >this.startIp)
                        rangB = recNO;
                    else
                        rangE = recNO;
                }this.GetStartIp(rangB);
                this.GetEndIp();
                if (this.startIp = ip_Int this.endIp >= ip_Int)
                {
                    this.GetCountry();
                    this.local =this.local.Replace("(我們一定要解放臺灣!!!)", "");
                }else{
                    nRet =3;
                    this.country ="未知";
                    this.local ="";
                }
                objfs.Close();
                return nRet;
            }catch{
                return1;
            }
        }// IP地址轉換成Int數據#region IP地址轉換成Int數據 privatelong IpToInt(string ip)
        {
            char[] dot =newchar[] { '.' };
            string[] ipArr = ip.Split(dot);
            if (ipArr.Length ==3)
                ip = ip +".0";
            ipArr = ip.Split(dot);

            long ip_Int =0;
            long p1 =long.Parse(ipArr[0]) *256*256*256;
            long p2 =long.Parse(ipArr[1]) *256*256;
            long p3 =long.Parse(ipArr[2]) *256;
            long p4 =long.Parse(ipArr[3]);
            ip_Int = p1 + p2 + p3 + p4;
            return ip_Int;
        }//獲取起始IP范圍#region 獲取起始IP范圍 privatelong GetStartIp(long recNO)
        {
            long offSet = firstStartIp + recNO *7;
            //objfs.Seek(offSet,SeekOrigin.Begin);             objfs.Position = offSet;
            byte[] buff =new Byte[7];
            objfs.Read(buff, 0, 7);

            endIpOff = Convert.ToInt64(buff[4].ToString()) + Convert.ToInt64(buff[5].ToString()) *256+ Convert.ToInt64(buff[6].ToString()) *256*256;
            startIp = Convert.ToInt64(buff[0].ToString()) + Convert.ToInt64(buff[1].ToString()) *256+ Convert.ToInt64(buff[2].ToString()) *256*256+ Convert.ToInt64(buff[3].ToString()) *256*256*256;
            return startIp;
        }// 獲取結束IP#region 獲取結束IP privatelong GetEndIp()
        {
            //objfs.Seek(endIpOff,SeekOrigin.Begin);             objfs.Position = endIpOff;
            byte[] buff =new Byte[5];
            objfs.Read(buff, 0, 5);
            this.endIp = Convert.ToInt64(buff[0].ToString()) + Convert.ToInt64(buff[1].ToString()) *256+ Convert.ToInt64(buff[2].ToString()) *256*256+ Convert.ToInt64(buff[3].ToString()) *256*256*256;
            this.countryFlag = buff[4];
            returnthis.endIp;
        }//獲取國家/區域偏移量#region 獲取國家/區域偏移量 privatestring GetCountry()
        {
            switch (this.countryFlag)
            {
                case1:
                case2:
                    this.country = GetFlagStr(this.endIpOff +4);
                    this.local = (1==this.countryFlag) ?"" : this.GetFlagStr(this.endIpOff +8);
                    break;
                default:
                    this.country =this.GetFlagStr(this.endIpOff +4);
                    this.local =this.GetFlagStr(objfs.Position);
                    break;
            }return"";
        }//獲取國家/區域字符串#region 獲取國家/區域字符串 privatestring GetFlagStr(long offSet)
        {
            int flag =0;
            byte[] buff =new Byte[3];
            while (1==1)
            {
                objfs.Position = offSet;
                flag = objfs.ReadByte();
                if (flag ==1|| flag ==2)
                {
                    objfs.Read(buff, 0, 3);
                    if (flag ==2)
                    {
                        this.countryFlag =2;
                        this.endIpOff = offSet -4;
                    }
                    offSet = Convert.ToInt64(buff[0].ToString()) + Convert.ToInt64(buff[1].ToString()) *256+ Convert.ToInt64(buff[2].ToString()) *256*256;
                }else{
                    break;
                }
            }if (offSet 12)
                return"";
            objfs.Position = offSet;
            return GetStr();
        }//GetStr#region GetStr privatestring GetStr()
        {
            byte lowC =0;
            byte upC =0;
            string str ="";
            byte[] buff =newbyte[2];
            while (1==1)
            {
                lowC = (Byte)objfs.ReadByte();
                if (lowC ==0)
                    break;
                if (lowC >127)
                {
                    upC = (byte)objfs.ReadByte();
                    buff[0] = lowC;
                    buff[1] = upC;
                    System.Text.Encoding enc = System.Text.Encoding.GetEncoding("GB2312");
                    str += enc.GetString(buff);
                }else{
                    str += (char)lowC;
                }
            }return str;
        }publicstring IPLocation(string ip)
        {
            this.ip = ip;
            this.QQwry();
            if (this.country.Trim().Contains(this.local.Trim()))
                returnthis.country.Trim();
            returnthis.country.Trim() +this.local.Trim();
        }
}

3、ASP.NET根據IP獲取省市地址的調用

復制代碼 代碼如下:
string ip="123.81.176.99";
IPScanner ipscaner = new IPScanner();
ipscaner.IPLocation(ip); 
string strIPAddress=ipscaner.Country;

希望本文所述對大家的C#程序設計有所幫助。

您可能感興趣的文章:
  • Asp.net獲取客戶端IP常見代碼存在的偽造IP問題探討
  • ASP.NET獲取真正的客戶端IP地址的6種方法
  • asp.net獲取真實ip的方法
  • asp.net獲取URL和IP地址的方法匯總
  • asp.net(vb.net)獲取真實IP的函數
  • asp.net Javascript獲取CheckBoxList的value
  • asp.net 獲取IP的相關資料
  • JavaScript asp.net 獲取當前超鏈接中的文本
  • ASP.NET 獲取客戶端IP方法

標簽:天門 江蘇 蘭州 德陽 白山 張家界 新疆 陽泉

巨人網絡通訊聲明:本文標題《ASP.NET實現根據IP獲取省市地址的方法》,本文關鍵詞  ASP.NET,實現,根據,獲取,省市,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《ASP.NET實現根據IP獲取省市地址的方法》相關的同類信息!
  • 本頁收集關于ASP.NET實現根據IP獲取省市地址的方法的相關信息資訊供網民參考!
  • 推薦文章
    91麻豆精品国产自产在线观看一区| 免费毛片播放| 免费一级生活片| 你懂的在线观看视频| 日韩在线观看视频免费| a级毛片免费观看网站| 国产一区二区精品尤物| 国产麻豆精品hdvideoss| 精品久久久久久免费影院| 国产不卡在线看| 精品国产一区二区三区久| 99久久精品国产片| 九九精品久久| 亚洲 国产精品 日韩| 99久久网站| 久久国产一久久高清| 欧美激情伊人| 国产激情一区二区三区| 久久精品欧美一区二区| 黄色免费三级| 国产伦久视频免费观看视频| 精品久久久久久免费影院| 97视频免费在线| 国产极品精频在线观看| 欧美电影免费| 亚欧乱色一区二区三区| 日韩欧美一二三区| 欧美激情伊人| 二级片在线观看| 日本伦理片网站| 国产综合成人观看在线| 中文字幕一区二区三区精彩视频| 韩国妈妈的朋友在线播放| 九九热国产视频| 欧美一级视| 尤物视频网站在线| 国产伦久视频免费观看视频| 精品久久久久久中文字幕一区| 久久国产一区二区| 可以免费看污视频的网站| 精品国产香蕉伊思人在线又爽又黄| 九九干| 91麻豆爱豆果冻天美星空| 精品久久久久久免费影院| 天天做日日干| 国产网站免费| 国产亚洲精品aaa大片| 999精品视频在线| 精品在线免费播放| 午夜在线影院| 国产亚洲男人的天堂在线观看| 国产不卡精品一区二区三区| 久久国产影院| 国产视频一区在线| 精品视频免费看| 久久精品道一区二区三区| 日韩专区一区| 欧美另类videosbestsex久久| 国产网站免费在线观看| 青青久久精品| 青草国产在线| 青草国产在线| 日韩在线观看视频网站| 香蕉视频亚洲一级| 高清一级淫片a级中文字幕| 成人免费观看男女羞羞视频| 午夜在线亚洲| 国产亚洲免费观看| 国产精品1024永久免费视频| 日韩在线观看免费| 国产激情视频在线观看| 日韩女人做爰大片| 国产麻豆精品免费密入口| 青青久久精品国产免费看| 国产不卡在线观看视频| 一级女性大黄生活片免费| 国产福利免费观看| 久久99中文字幕| 日本免费区| 国产a免费观看| 香蕉视频久久| 欧美日本免费| 夜夜操网| 欧美a级成人淫片免费看| 国产一区精品| 久久久久久久网| 国产不卡福利| 亚洲 国产精品 日韩| 韩国三级一区| 国产伦精品一区三区视频| 国产伦久视频免费观看视频| 日本免费区| 精品视频在线观看免费| 999精品影视在线观看| 精品国产一区二区三区久| 免费国产在线视频| 久久精品店| 国产不卡在线看| 成人免费网站视频ww| 免费一级片在线| 午夜激情视频在线播放| 久久国产精品永久免费网站| 色综合久久久久综合体桃花网| 日韩中文字幕在线播放| 亚飞与亚基在线观看| 欧美日本国产| 91麻豆精品国产片在线观看| 久久精品欧美一区二区| 精品国产一区二区三区精东影业| 尤物视频网站在线观看| 国产麻豆精品免费视频| 一级女性全黄生活片免费| 国产一区二区精品尤物| 久久99中文字幕| 国产a视频| 久草免费资源| a级黄色毛片免费播放视频| 亚洲精品久久玖玖玖玖| 九九干| 久久成人综合网| 欧美爱色| 美女免费毛片| 九九久久国产精品| 好男人天堂网 久久精品国产这里是免费 国产精品成人一区二区 男人天堂网2021 男人的天堂在线观看 丁香六月综合激情 | 国产高清视频免费观看| 精品久久久久久影院免费| 国产一区二区福利久久| 久久国产影视免费精品| 国产一区二区精品| 国产成人欧美一区二区三区的| 精品久久久久久中文字幕2017| 91麻豆tv| 国产精品1024在线永久免费| 欧美a级片视频| 色综合久久天天综合绕观看| 日韩在线观看免费完整版视频| 91麻豆tv| 国产一区二区精品在线观看| 欧美一级视频高清片| 国产精品1024永久免费视频| 亚洲 激情| 欧美日本免费| 91麻豆精品国产高清在线| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 日本免费区| 九九久久国产精品大片| 日韩在线观看免费完整版视频| 国产精品自拍亚洲| 精品国产一区二区三区久久久狼| 日韩一级黄色片| 日韩免费在线视频| 国产视频一区二区在线观看| 精品久久久久久中文字幕一区| 日韩中文字幕在线播放| 精品视频在线观看视频免费视频 | 国产不卡福利| 日韩免费在线视频| 免费国产在线观看| 午夜在线观看视频免费 成人| 国产91精品露脸国语对白| 国产精品自拍亚洲| 深夜做爰性大片中文| 尤物视频网站在线| 九九九网站| 国产不卡在线观看视频| 日日日夜夜操| 一本伊大人香蕉高清在线观看| 国产欧美精品午夜在线播放| 亚欧视频在线| 精品毛片视频| 欧美国产日韩在线| 成人免费一级纶理片| 国产麻豆精品视频| 久久久久久久免费视频| 免费毛片播放| 精品久久久久久中文字幕一区| 久久国产影视免费精品| 国产一区二区精品| 精品国产一区二区三区精东影业| 日本免费看视频| 欧美一区二区三区在线观看| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 久久国产一区二区| 高清一级毛片一本到免费观看| 久久国产精品永久免费网站| a级毛片免费观看网站| 日韩av成人| 欧美国产日韩精品| 日韩av成人| 欧美国产日韩在线| 日韩avdvd| 国产91丝袜在线播放0| 高清一级片| 成人免费观看的视频黄页| 国产一级生活片| 国产激情一区二区三区| 日本免费区| 日本特黄一级| 一本伊大人香蕉高清在线观看| 久久99中文字幕久久|