2015-09-29 3 views
1

Я использую элемент управления WebBrowser, и когда пользователь переходит к, например, http://www.google.co.uk Я бы хотел отобразить IP-адрес хоста, к которому подключен пользователь.Найти IP-адрес хоста

В настоящее время я жду DocumentComplete события огня, а затем использовать Dns.GetHostEntry("http://www.google.co.uk"); но это возвращает AddressList, который является массивом IP-адреса, а не фактической IP пользователь подключен. В этом примере возвращаются 16 адресов IPv4.

Как получить IP-адрес, к которому подключен пользователь, а не ко всем доступным адресам?

Фрагмент кода:

 private void browser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) 
    { 
      IPHostEntry Host = Dns.GetHostEntry("http://www.google.co.uk"); 
      foreach(var ip in Host.AddressList) 
       Debug.WriteLine("Host address list: " + ip); 
    } 
+1

Когда я запускаю 'Dns.GetHostEntry ("WWW.GOOGLE.CO.UK")' (без HTTP) я только получить один IP (74.125.21.94), т. Е. Я удаляю бит 'http: //' перед запросом IP – rbm

ответ

2

Удалите http и https, прежде чем запрашивать IP:

var sample_hosts = new[] {"http://www.google.co.uk", "https://www.google.co.uk", "http://www.amazon.com"}; 
foreach (var host in sample_hosts) 
{ 
    var queryhost = host.Replace("http://", "").Replace("https://", ""); 
    var hostEntry = Dns.GetHostEntry(queryhost); 
    foreach (var ip in hostEntry.AddressList) 
    { 
     Console.WriteLine("IP for {0}: {1}", queryhost, ip); 
    } 
} 

печатает

IP for www.google.co.uk: 64.233.176.9 
IP for www.google.co.uk: 64.233.176.9 
IP for www.amazon.com: 176.32.98.166 

Но так как вы используете URL, то вы также сделать что-то вроде

var url = "http://www.amazon.co.uk/My-Story-Steven-Gerrard/dp/1405923385/ref=zg_bs_books_5"; 
var uri = new Uri(url); 
Console.WriteLine(uri.Host); 

который возвращает фактический хост:

www.amazon.co.uk 
+0

. Это, к сожалению, все еще возвращает 16 IP-адресов для меня (в диапазоне 62.253.72. [От 140 до 187]). Когда я проверил «www.google.co.uk», используя кучу «IP-искателей», которые я мог найти в Интернете, результаты тоже разные. Есть ли другой способ найти IP-адрес хоста, с которым пользователь прошел навигацию, чтобы вы знали? – TEK

+0

@TEK подумайте о том, чтобы уточнить свою цель (возможно, даже в отдельном посте - это явно испорченное вами сообщение нерабочего кода). Зачем вам нужно знать * точный * IP, который использовался для возврата исходной HTML-страницы? –

+0

@AlexeiLevenkov. Причина, по которой кто-то может захотеть узнать * точный * IP, по юридическим причинам. Я указываю, что мой браузер посещает произвольный URL-адрес, а где-то в эфире я подключен к серверу с IP-адресом/es. Некоторые хосты имеют много IP-адресов, поэтому просто получить все IP-адреса, на которых размещен хост, не так много, если мне когда-либо понадобится доказать, какой сервер именно (я знаю, что серверы могут иметь много общедоступных IP-адресов, но, безусловно, получить IP-адрес, который я был, так сказать, назначен, когда я впервые установил это соединение). Иногда приятно быть точным. – TEK

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