Разрешено ли подстрока IPHostEntry.HostName для имени машины?

Сейчас у меня есть требование найти имя хоста ПК по его IP-адресу, и я решил эту проблему с помощью этой функции:

/// <summary>
/// Returns the DNS Name of IP Address without the Domain.
/// </summary>
public string GetDNSNameFromReverseLookUp(string ip)
{
    IPAddress hostIPAddress = IPAddress.Parse(ip);
    IPHostEntry hostInfo = Dns.GetHostEntry(hostIPAddress);
    return hostInfo.HostName.Substring(0, hostInfo.HostName.IndexOf('.'));
}

Но я не доволен этим substring() Решение проблемы.

Разрешено ли использовать эту функцию таким образом? Или я должен бояться некоторых проблем с сетью в будущем? Есть ли лучшие (более безопасные) способы получить имя хоста без домена?

Я ищу более безопасное сетевое решение, а не другой способ обработки строк. Как уже упоминалось в комментариях, я немного боюсь, что не каждая ОС возвращает имя хоста в формате: [Hostname].[Domainname] ,

2 ответа

Вы получите сообщение об ошибке, если компьютер не присоединен к домену. Поскольку (точка) не найдена, и поэтому использование функции разбиения является наиболее разумным. Я уже проверил.

Попробуй это

public string GetDNSNameFromReverseLookUp(string ip)
{
    IPAddress hostIPAddress = IPAddress.Parse(ip);
    IPHostEntry hostInfo = Dns.GetHostEntry(hostIPAddress);
    return hostInfo.HostName.Split('.')[0];
}
Другие вопросы по тегам