2016-08-03 15 views
0

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

/// <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].

+0

Другой способ может состоять в том, чтобы разбить строку на точку (.), Но это будет только так же безопасно, как и этот :) – sachin

+1

Почему, по вашему мнению, этот подход небезопасен? – Steve

+0

Я немного боюсь, что не каждая ОС возвращает имя хоста в формате: '[Hostname]. [Domainname]'. – Smartis

ответ

-2

Попробуйте

public string GetDNSNameFromReverseLookUp(string ip) 
{ 
    IPAddress hostIPAddress = IPAddress.Parse(ip); 
    IPHostEntry hostInfo = Dns.GetHostEntry(hostIPAddress); 
    return hostInfo.HostName.Split('.')[0]; 
} 
+0

То же самое. Не более, не менее сетевой безопасности ... – Smartis

0

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

+0

Это верно, но также и не ответственность функции. – Smartis

 Смежные вопросы

  • Нет связанных вопросов^_^