public void ParseAddress() { var addrs = NetUri.ParseAddress("newlifex.com"); Assert.NotNull(addrs); //Assert.Equal(3, addrs.Length); Assert.True(addrs.Length > 0); Assert.Contains(addrs, e => e.AddressFamily == AddressFamily.InterNetwork); if (addrs.Length > 1) { Assert.Contains(addrs, e => e.AddressFamily == AddressFamily.InterNetworkV6); } var addrs2 = NetUri.ParseAddress("240e:e0:9930:2100:9914:b410:c7d8:c0a6"); Assert.NotNull(addrs2); Assert.Single(addrs2); Assert.Equal("240e:e0:9930:2100:9914:b410:c7d8:c0a6", addrs2[0] + ""); var uri = new NetUri("https://newlifex.com"); Assert.Equal("newlifex.com", uri.Host); var addrs3 = uri.GetAddresses(); //Assert.Equal(3, addrs3.Length); Assert.True(addrs.Length > 0); }
/// <summary>分析地址,根据IP或者域名得到IP地址,缓存60秒,异步更新</summary> /// <param name="hostname"></param> /// <returns></returns> public static IPAddress ParseAddress(this String hostname) { if (hostname.IsNullOrEmpty()) { return(null); } if (_dnsCache.FindMethod == null) { _dnsCache.FindMethod = s => NetUri.ParseAddress(s)?.FirstOrDefault(); } //return _dnsCache.GetItem(hostname, NetUri.ParseAddress); return(_dnsCache[hostname]); }
/// <summary>分析地址,根据IP或者域名得到IP地址,缓存60秒,异步更新</summary> /// <param name="hostname"></param> /// <returns></returns> public static IPAddress ParseAddress(this String hostname) { if (hostname.IsNullOrEmpty()) { return(null); } var key = $"NetHelper:ParseAddress:{hostname}"; if (_Cache.TryGetValue <IPAddress>(key, out var address)) { return(address); } address = NetUri.ParseAddress(hostname)?.FirstOrDefault(); _Cache.Set(key, address, 60); return(address); }