Разрешено ли подстрока 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];
}