当前位置: 首页 > news >正文

重庆网站建设培训机构网站的二级目录怎么做

重庆网站建设培训机构,网站的二级目录怎么做,长春仿站定制模板建站,管理系统入口admin商业收费 百度地图高德地图腾讯地图纯真IP 开源免费 纯真ip免费版 以前可以直接下载,现在获取ip数据库的方式改变了,自行官网查看把,个人或者学术研究,商用追责,商业用途慎用 using System.Collections.Generic; us…

商业收费

  • 百度地图
  • 高德地图
  • 腾讯地图
  • 纯真IP

开源免费

纯真ip免费版

以前可以直接下载,现在获取ip数据库的方式改变了,自行官网查看把,个人或者学术研究,商用追责,商业用途慎用

using System.Collections.Generic;
using System.IO;
using System.Reflection;
using System.Text;
using System;
using Microsoft.Extensions.Options;
using Youhuo.ConfigModel;
using System.Text.RegularExpressions;namespace Stu01
{public class IPSearchHelper{private readonly IOptions<ChunZhenSetting> options;System.IO.FileStream ipFile;long ip;public IPSearchHelper(IOptions<ChunZhenSetting> options){this.options = options;}///<summary>/// 地理位置,包括国家和地区///</summary>public struct IPLocation{public string country, area;}///<summary>/// 获取指定IP所在地理位置///</summary>///<param name="strIP">要查询的IP地址</param>///<returns></returns>public IPLocation GetIPLocation(string strIP){IPLocation loc = new IPLocation();//return loc;if (string.IsNullOrEmpty(strIP)){return loc;}var match = Regex.Match(strIP, @"^(25[0-5]|2[0-4]\d|[0-1]?\d?\d)(\.(25[0-5]|2[0-4]\d|[0-1]?\d?\d)){3}$");if (!match.Success){return loc;}ip = IPToLong(strIP);var RegexStr = @"(^[\/\\].*)|(.*:.*)";//判断是不是绝对路径,options.Value.DatPath纯真数据库存放的路径if (System.Text.RegularExpressions.Regex.IsMatch(options.Value.DatPath, RegexStr)){ipFile = new System.IO.FileStream(options.Value.DatPath, System.IO.FileMode.Open, System.IO.FileAccess.Read);}else{var fullPath = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), options.Value.DatPath);ipFile = new System.IO.FileStream(fullPath, System.IO.FileMode.Open, System.IO.FileAccess.Read);}long[] ipArray = BlockToArray(ReadIPBlock());long offset = SearchIP(ipArray, 0, ipArray.Length - 1) * 7 + 4;ipFile.Position += offset;//跳过起始IPipFile.Position = ReadLongX(3) + 4;//跳过结束IPint flag = ipFile.ReadByte();//读取标志if (flag == 1)//表示国家和地区被转向{ipFile.Position = ReadLongX(3);flag = ipFile.ReadByte();//再读标志}long countryOffset = ipFile.Position;loc.country = ReadString(flag);if (flag == 2){ipFile.Position = countryOffset + 3;}flag = ipFile.ReadByte();loc.area = ReadString(flag);ipFile.Close();ipFile = null;return loc;}///<summary>/// 将字符串形式的IP转换位long///</summary>///<param name="strIP"></param>///<returns></returns>public long IPToLong(string strIP){if (strIP.Equals("::1")){strIP = "127.0.0.1";}byte[] ip_bytes = new byte[8];string[] strArr = strIP.Split(new char[] { '.' });if (strArr.Length <= 1){return 0;}byte tmpNumber;for (int i = 0; i < 4; i++){var res = byte.TryParse(strArr[3 - i], out tmpNumber);ip_bytes[i] = res ? tmpNumber : (byte)0;}return BitConverter.ToInt64(ip_bytes, 0);}///<summary>/// 将索引区字节块中的起始IP转换成Long数组///</summary>///<param name="ipBlock"></param>long[] BlockToArray(byte[] ipBlock){long[] ipArray = new long[ipBlock.Length / 7];int ipIndex = 0;byte[] temp = new byte[8];for (int i = 0; i < ipBlock.Length; i += 7){Array.Copy(ipBlock, i, temp, 0, 4);ipArray[ipIndex] = BitConverter.ToInt64(temp, 0);ipIndex++;}return ipArray;}///<summary>/// 从IP数组中搜索指定IP并返回其索引///</summary>///<param name="ipArray">IP数组</param>///<param name="start">指定搜索的起始位置</param>///<param name="end">指定搜索的结束位置</param>///<returns></returns>int SearchIP(long[] ipArray, int start, int end){int middle = (start + end) / 2;if (middle == start)return middle;else if (ip < ipArray[middle])return SearchIP(ipArray, start, middle);elsereturn SearchIP(ipArray, middle, end);}///<summary>/// 读取IP文件中索引区块///</summary>///<returns></returns>byte[] ReadIPBlock(){long startPosition = ReadLongX(4);long endPosition = ReadLongX(4);long count = (endPosition - startPosition) / 7 + 1;//总记录数ipFile.Position = startPosition;byte[] ipBlock = new byte[count * 7];ipFile.Read(ipBlock, 0, ipBlock.Length);ipFile.Position = startPosition;return ipBlock;}///<summary>/// 从IP文件中读取指定字节并转换位long///</summary>///<param name="bytesCount">需要转换的字节数,主意不要超过8字节</param>///<returns></returns>long ReadLongX(int bytesCount){byte[] _bytes = new byte[8];ipFile.Read(_bytes, 0, bytesCount);return BitConverter.ToInt64(_bytes, 0);}///<summary>/// 从IP文件中读取字符串///</summary>///<param name="flag">转向标志</param>///<returns></returns>string ReadString(int flag){if (flag == 1 || flag == 2)//转向标志ipFile.Position = ReadLongX(3);elseipFile.Position -= 1;List<byte> list = new List<byte>();byte b = (byte)ipFile.ReadByte();while (b > 0){list.Add(b);b = (byte)ipFile.ReadByte();}Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);return Encoding.GetEncoding("GB2312").GetString(list.ToArray());}}
}

但是有高并发问题

ip2region

提供了多种语言的支持,更新频率高,支持高并发

Install-Package IP2Region.Net

下载保存xdbhttps://github.com/lionsoul2014/ip2region/blob/master/data/ip2region.xdb
在这里插入图片描述

//这里为啥直接填写ip2region.xdb,因为用了始终复制
ISearcher searcher = new Searcher(CachePolicy.File, "ip2region.xdb");
var ipResult = searcher.Search("123.232.22.18");

在这里插入图片描述

iptools

C#版本,简单易用,支持高并发响应快,但是更新频率不高

Install-Package IPTools.China

下载ip数据库https://github.com/stulzq/IPTools/raw/master/db/ip2region.db,设置为始终复制
在这里插入图片描述
运行代码即可

IpTool.Search("your ip address");

结果

{"IpAddress":"123.232.22.18","Country":"中国","CountryCode":null,"Province":"山东","ProvinceCode":null,"City":"济南","PostCode":null,"NetworkOperator":"联通","Latitude":0,"Longitude":0,"AccuracyRadius":null
}
http://www.yayakq.cn/news/794017/

相关文章:

  • 金隅嘉华大厦网站建设公司商务网站安全方案设计
  • 网站负责人不是法人鼎湖网站建设
  • 建个网站视频教程仿建网站
  • 苏州建设交易中心网站php网站开发专业介绍
  • 找做报纸的背景图去什么网站免费网站空间php
  • 学校网站建设的难点游戏在线玩免费免登录
  • 网站免费做招生宣传做平台网站外包多少钱啊
  • 做网站容易还是做小程序容易南昌网站搭建服务
  • 有意义网站惠州市seo上词
  • 百度做个公司网站要多少钱网站搬家到Wordpress
  • 电商 做图 网站wordpress如何备份数据库结构
  • 济南精品建站外包公司价格网站申请书
  • 西安企业建站公司免费头像在线制作
  • 网站为什么要进行内容更新吗网站版面如何布局
  • 网站底部模板源码优化电脑的软件有哪些
  • 美食网站 源码大型的平台类网站建设需要多少资金
  • 网站界面设计描述抖音关注10元一单兼职
  • 化妆品网站建设实训总结做网站公司常熟
  • 建设网站主机要买什么的好网站建设的简历制作
  • 百度网站下载安装保定外贸网站制作
  • 北京网站设计公司yx成都柚米科技15建设一个网站的流程.
  • 淄博做网站的遂宁网站建设公司哪家好
  • 郑州专业的网站建设公司排名深圳网站建设服务中心
  • 成都网站建设企业惠州建设集团网站
  • 福建泉州网站建设公司哪家好无锡做公司网站多少钱
  • html购物网站源码网站漏洞怎么修复
  • 南京网站制作公司电话iis如何做同时运行两个网站80端口
  • 网站运营需要哪些资质资兴市网站建设服务商
  • 上海网站设计费用网站整体地图怎么做
  • 沈阳三好街附近做网站手机主页网站哪个好用