Можно создать дубликат:
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 с любого компьютера через из сети Интернет)
Да, если NAT находится на месте (что, вероятно, должно быть) – paul
Так есть ли другой способ справиться с этим сценарием? –
Нет, о чем я могу думать, поскольку Паул указывает, что маршрутизатор - это один обрабатывая это преобразование на уровне TCP/IP, поэтому я вижу небольшую маржу. Однако, поскольку этот вопрос был отмечен как дубликат, я бы предложил искать аналогичные вопросы в StackOverflow, чтобы узнать, вышли ли другие пользователи с решением, но я не Не вижу способа обойти перевод маршрутизатора здесь :( – SilentDoc