コード例 #1
0
        /// <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);
            }
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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);
        }