Получение имени компьютера с помощью c # - PullRequest
1 голос
/ 12 июля 2010

Я использую этот код в файле cs на странице asp.net для получения IP-адреса от зарегистрированного пользователя:

cmd.Parameters.AddWithValue("@ip",System.Web.HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"]);

Я бы тоже хотел иметь имя его компьютера. Как мне это сделать?

1 Ответ

2 голосов
/ 12 июля 2010

Это не обязательно возможно.

Вы можете попытаться отменить поиск имени по IP-адресу, используя что-то вроде

private string[] GetHostnamesForIpAddress(string ipAddress)
{
   var hostIp= IPAddress.Parse(ipAddress);
   IPHostEntry hostInfo = Dns.GetHostByAddress(hostIp);

   return hostInfo.Aliases;
}

В локальной сети (где ваш клиент является локальным для вас, например, в корпоративной сети), это вполне может быть нормально, если все клиенты имеют обратные сопоставления IP-адресов в DNS.

В Интернете гораздо меньше шансов работать для большинства клиентов. У вас есть только IP-адрес, и обычно для них не будет настроено обратное сопоставление DNS. Фактически, огромное количество машин будет находиться за прокси-серверами и шлюзами NAT и иметь только частные, не маршрутизируемые IP-адреса, для которых невозможно выполнить обратный поиск.

...