Создание IPEndPoint от имени хоста

Я использую сторонний dll, который требует «IPEndPoint». Поскольку пользователь может войти или в IP-адрес или в Имя хоста, я должен преобразовать Имя хоста в IP-адрес, прежде чем я смогу создать IPEndPoint. Там какие-либо функции состоят в том, чтобы сделать это в .NET или являются мной оказывающийся перед необходимостью писать мой собственный код поиска DNS?

13
задан Valentin Rocher 20 January 2010 в 13:58
поделиться

2 ответа

System.net.dns.Gethostaddresses

public static IPEndPoint GetIPEndPointFromHostName(string hostName, int port, bool throwIfMoreThanOneIP)
{
    var addresses = System.Net.Dns.GetHostAddresses(hostName);
    if (addresses.Length == 0)
    {
        throw new ArgumentException(
            "Unable to retrieve address from specified host name.", 
            "hostName"
        );
    }
    else if (throwIfMoreThanOneIP && addresses.Length > 1)
    {
        throw new ArgumentException(
            "There is more that one IP address to the specified host.", 
            "hostName"
        );
    }
    return new IPEndPoint(addresses[0], port); // Port gets validated here.
}
26
ответ дан 1 December 2019 в 20:56
поделиться

Вы можете использовать что-то вроде этого:

var addresses = Dns.GetHostAddresses(uri);
Debug.Assert(addresses.Length > 0);
var endPoint = new IPEndPoint(addresses[0], port);
2
ответ дан 1 December 2019 в 20:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: