2013-01-28 3 views
0

Можно создать дубликат:
Get local ip address c#Как найти IP-адрес системы по всей сети

В настоящее время я использую следующий код для получения IP-addrress каждой машины, которые вошли в систему мой веб-сайт. Он работает нормально, если мой сайт находится на моем сервере интрасети. Но если тот же код развернут на сервере клиента, и если я получаю доступ к сайту с моего места, используя URL-адрес приложения-клиента, например (http://123.23.45.89/MyProd/App.htm), он обновляет ip-адрес моего сервера адрес, а не мой локальный IP-адрес.

string IP4Address = String.Empty; 

foreach (IPAddress IPA in Dns.GetHostAddresses(Request.ServerVariables["REMOTE_ADDR"].ToString()))) 
{ 
    if (IPA.AddressFamily.ToString() == "InterNetwork") 
    { 
    IP4Address = IPA.ToString(); 
    break; 
    } 
} 

if (IP4Address != String.Empty) 
{ 
    return IP4Address; 
} 

foreach (IPAddress IPA in Dns.GetHostAddresses(Dns.GetHostName())) 
{ 
    if (IPA.AddressFamily.ToString() == "InterNetwork") 
    { 
    IP4Address = IPA.ToString(); 
    break; 
    } 
} 

return IP4Address; 

Если есть другой способ, чтобы найти адрес IP-для отдельного ПК. (Как найти локальный IP-addess с любого компьютера через из сети Интернет)

ответ

2

Насколько я знаю, все соединения из сети ЛВС и внешнего сервера имеют WAN Ip сети (обычно это маршрутизатор). :(

+0

Да, если NAT находится на месте (что, вероятно, должно быть) – paul

+0

Так есть ли другой способ справиться с этим сценарием? –

+0

Нет, о чем я могу думать, поскольку Паул указывает, что маршрутизатор - это один обрабатывая это преобразование на уровне TCP/IP, поэтому я вижу небольшую маржу. Однако, поскольку этот вопрос был отмечен как дубликат, я бы предложил искать аналогичные вопросы в StackOverflow, чтобы узнать, вышли ли другие пользователи с решением, но я не Не вижу способа обойти перевод маршрутизатора здесь :( – SilentDoc

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