Я хотел показать имя пользователя (см. Www.ipchicken.com ), но единственное, что я могу найти, - это IP-адрес. Я попытался обратный поиск, но тоже не сработало:
IPAddress ip = IPAddress.Parse(this.lblIp.Text);
string hostName = Dns.GetHostByAddress(ip).HostName;
this.lblHost.Text = hostName;
Но HostName совпадает с IP-адресом.
Кто знает, что мне нужно делать?
Спасибо. Габ.
Редактировать мой предыдущий ответ. Попробуйте (в vb.net):
Dim sTmp As String
Dim ip As IPHostEntry
sTmp = MaskedTextBox1.Text
Dim ipAddr As IPAddress = IPAddress.Parse(sTmp)
ip = Dns.GetHostEntry(ipAddr)
MaskedTextBox2.Text = ip.HostName
Dns.resolve устарел в более поздних версиях .Net. Как уже было сказано выше, я полагаю, что проблема вызвана тем, что ваш IP-адрес не имеет фиксированного имени или имеет несколько имен. Приведенный выше пример работает с адресами Google, но не с используемым нами адресом, с которым связано несколько имен.
Не все IP-адреса должны иметь имена хостов. Я думаю, что то, что происходит в вашем случае. Попробуйте это с более известными парами IP / hostname, например:
Имя: google.com Адрес: 72.14.207.99
Имя: google.com Адрес: 64.233.187.99
Имя: google.com Адрес: 64.233.167.99
... я могу ошибаться
Многие пользователи имеют один и тот же общий IP-адрес, поэтому вы не сможете найти их имена хостов. И многие пользователи не обязательно будут иметь записи DNS в общедоступных DNS для IP-адресов, с которых они приходят.
Вам нужен метод Dns.Resolve () из System.Net
Смотрите эту статью
Также помните, что обратный поиск не всегда дает тот же адрес, что и при прямом поиске DNS.
Например, для google.com я получаю ip 64.233.167.99,
но при обратном поиске DNS для этого IP-адреса возвращается py-in-f99.google.com
Глупо ... Код опубликован был на 100% действительным и работающим ... Но на 10 строк ниже я заменил this.lblHost.Text другим значением, которое оказалось IP-адресом.
Сожалею.