При получении URL-адреса через HttpWebRequest могу ли я увидеть IP-адрес конечного сервера?

StackOverflow https://stackoverflow.com/questions/1365586

Вопрос

Предположим, я извлекаю URL-адрес следующим образом:

string url = "http://www.somesite.com/somepage.html"
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
HttpWebResponse resp = (HttpWebResponse)req.GetResponse();

Есть ли способ, которым я могу увидеть IP-адрес целевого URL-адреса?Требуется ли для этого отдельный вызов?

Спасибо

Это было полезно?

Решение

Посмотрите на класс System.Net.Dns.Вы можете получить список IP-адресов хоста из Dns.GetHostEntry()Dns.GetHostEntry() способ.

Другие советы

Хотя Dns.GetHostEntry() может предоставить вам IP-адрес сервера, в случае наличия нескольких записей A для одного и того же хоста, вы получите их все (также известный как циклический DNS).Однако при фактическом подключении к веб-серверу клиент выбирает один из этих IP-адресов.

Похоже, что не существует открытого способа точно узнать, какой IP-адрес был использован при подключении.Я нашел эту информацию во время работы над нашим решением для веб-мониторинга по адресу www.justwentdown.com.Эта информация находится в личном поле веб-ответа,

myHttpWebResponse.ResponseStream.Connection.ServerAddress

Однако, поскольку Connection и ServerAddress являются частными / внутренними свойствами, вам нужно будет использовать отражение, чтобы получить значения.Я нашел это решение быть очень полезным в таких ситуациях.

Я протестировал это с .NET 4.0.Это немного запутанно и может привести к сбоям в будущих версиях .NET, поэтому я бы рекомендовал добавить модульный тест.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top