Преобразовать имя хоста в IP-адреса просто:
foreach (var hostName in new [] { "github.com", "microsoft.com", "google.com", "stackoverflow.com" })
{
var ipAddresses = Dns.GetHostAddresses(hostName);
Console.WriteLine($"=== {hostName}");
Console.WriteLine(string.Join(Environment.NewLine, ipAddresses.Select(ip => ip.ToString())));
Console.WriteLine();
}

Если я теперь хочу выбрать один IP-адрес , чтобы установить соединение (и записать этот точный IP-адрес), как бы я его выбрал?
Осложнения:
- Может быть несколько IP-адресов.
- Может быть несколько семейств адресов (IPv4 и IPv6).
- IPv6-адреса могут быть возвращены, но система может не поддерживать IPv6.
Есть ли приемлемый или рекомендуемый способ выбрать один?