/// <summary> /// 获取IP地区 /// </summary> /// <param name="ip"></param> /// <returns>中国|0|香港|香港|香港宽频</returns> public static async Task <string> GetRegionAsync(string ip, string path = "ip2region.db") { using (DbSearcher searchIp = new DbSearcher(path)) { var region = await searchIp.MemorySearchAsync(ip); return(region.Region); } }
public async Task <IpInfo> SearchAsync(string ip) { if (string.IsNullOrEmpty(ip)) { throw new ArgumentException(nameof(ip)); } var dataBlack = await _search.MemorySearchAsync(ip).ConfigureAwait(false); var ipinfo = RegionStrToIpInfo(dataBlack.Region); ipinfo.IpAddress = ip; return(ipinfo); }
public async Task SearchAsync_Test() { // We don't need the synchronizeContext, so just set to false var memResult = await _search.MemorySearchAsync("183.192.62.65").ConfigureAwait(false); var binarySearchResult = await _search.BinarySearchAsync("183.192.62.65").ConfigureAwait(false); var bTreeSearchResult = await _search.BtreeSearchAsync("183.192.62.65").ConfigureAwait(false); Assert.NotNull(memResult.Region); Assert.NotNull(binarySearchResult.Region); Assert.NotNull(bTreeSearchResult.Region); Assert.Equal(memResult.Region, binarySearchResult.Region); Assert.Equal(bTreeSearchResult.Region, memResult.Region); }