public static bool IsLoopBack(string ip) { switch (SocksUtilities.GetHostNameType(ip)) { case EndPointType.IPv4: return(IsLoopBackForIPv4(ip)); case EndPointType.IPv6: return(IsLoopBackForIPv6(ip)); } throw new NotSupportedException(); }
private async Task <SocksAddress> ResolveHostName(SocksAddress address) { if (address.HostNameType != EndPointType.HostName) { return(address); } var supportLevel = (AddressCompatibility & AddressCompatibility.SupportsIPv6) == AddressCompatibility.SupportsIPv6 ? SocksUtilities.IPv4SupportLevel.NoPreference : SocksUtilities.IPv4SupportLevel.RequiresIPv4; // Try resolve host name var resolvedHost = await SocksUtilities.ResolveHost(address.Host, supportLevel); if (string.IsNullOrEmpty(resolvedHost)) { return(null); } return(new SocksAddress(resolvedHost, address.Port)); }
public SocksAddress(string host, int port) : this(SocksUtilities.GetHostNameType(host), host, port) { }