protected virtual EndPoint ParseEndpointAddress(Uri uri, AddressFamily addressFamily)
{
#if SILVERLIGHT
return new DnsEndPoint(uri.Host, uri.Port, addressFamily);
#else
switch (uri.HostNameType)
{
case UriHostNameType.IPv4:
case UriHostNameType.IPv6:
return new IPEndPoint(IPAddress.Parse(uri.Host), uri.Port);
default:
{
var addresses = Dns.GetHostEntry(uri.Host).AddressList;
foreach (var addr in addresses)
{
if (addr.AddressFamily == addressFamily || addressFamily == AddressFamily.Unspecified)
{
return new IPEndPoint(addr, uri.Port);
}
}
throw new IOException("Cannot resolve '" + uri.Host + "' to an address in '" + addressFamily + "'");
}
}
#endif
}