private IEnumerable<IPEndPoint> GetBindAddresses(Uri uri)
{
IEnumerable<IPAddress> addresses;
if (uri.HostNameType==UriHostNameType.IPv4 ||
uri.HostNameType==UriHostNameType.IPv6) {
addresses = new IPAddress[] { IPAddress.Parse(uri.Host) };
}
else {
try {
addresses = Dns.GetHostAddresses(uri.DnsSafeHost);
}
catch (SocketException) {
return Enumerable.Empty<IPEndPoint>();
}
}
return addresses.Select(addr => new IPEndPoint(addr, uri.Port<0 ? 1935 : uri.Port));
}