Robymon Ответов: 2

Как получить местоположение клиентской машины


Можно ли получить местоположение клиентской машины без IP-адреса? Я пробовал разные коды, чтобы получить IP-адрес клиентской машины, но ни один из них не дает правильного IP-адреса, либо он дает 127.0.0.1, либо 10.0.0.3.

Что я уже пробовал:

Я попробовал следующие два метода
1)
частная строка GetUserIP()
{
строка ipList = запрос.ServerVariables["HTTP_X_FORWARDED_FOR"];

если (!строка.IsNullOrEmpty(ipList))
{
return ipList.Split(',')[0];
}

запрос на возврат.ServerVariables["REMOTE_ADDR"];
}

Это даст 127.0.0.1

2)

публичная статическая строка getExternalIp()
{
пробовать
{
строка externalIP;
externalIP = (new WebClient()).Скачать строку("http://checkip.dyndns.org/");
externalIP = (новое регулярное выражение (@"и\D{1,3}\.\д{1,3}\.\д{1,3}\.\д{1,3}"))
.Совпадения(externalIP)[0].Метод toString();
возврат externalIP;
}
catch { return null; }
}

Это позволит получить правильный IP, но это займет много времени, чтобы получить Out put, есть ли какой-нибудь код, который получит IP очень быстро.

2 Ответов

Рейтинг:
2

OriginalGriff

Нет - и даже с IP-адресом он не говорит вам ничего полезного: Использование геолокации на основе IP - адресов-и почему это в значительной степени бесполезно.[^]


Рейтинг:
0

Richard Deeming

Вы пометили это как ASP.NET, что означает, что метод 2 вернет внешний IP-адрес сервер.

Метод 1 возвращает адрес обратной связи, поскольку вы отлаживаете код в Visual Studio. В этом конкретном случае сервер и клиент-это один и тот же компьютер, поэтому 127.0.0.1 это правильный адрес.

Как только вы развернете свой код на реальном сервере, метод 1 должен вернуть правильный внешний IP-адрес клиента.