Raja Ganapathy Ответов: 3

Как найти публичный IP-адрес клиента в Интернете в C#?


I want the client public ip in c# i have used the below code get the public ip of client but code is getting only hosted server IP only not getting client's public ip how to get the Public ip of client.


these code getting only hosted server ip.


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

static string GetIPAddress()  
{  
    String address = "";  
    WebRequest request = WebRequest.Create("http://checkip.dyndns.org/");  
    using (WebResponse response = request.GetResponse())  
     using (StreamReader stream = new StreamReader(response.GetResponseStream()))  
     {  
        address = stream.ReadToEnd();  
     }  
  
     int first = address.IndexOf("Address: ") + 9;  
     int last = address.LastIndexOf("</body>");  
     address = address.Substring(first, last - first);  
  
     return address;  
}  


public string GetIPAddress()
{
try
{
// string address;
address = (new
WebClient()).DownloadString("http://checkip.dyndns.org/");
address = (new Regex(@"\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}"))
.Matches(address)[0].ToString();
return address;
}
catch { return null; }
}

3 Ответов

Рейтинг:
26

Jochen Arndt

Просьба к руководству CheckIP сервис выполняется на вашем сервере. В этом случае ваш сервер является клиент для которого возвращается IP-адрес.

Обратите также внимание, что такие службы полезны только тогда, когда они находятся за маршрутизатором, выполняющим сетевые переводы. В противном случае IP-адрес будет таким же, как и для интерфейса локальной сети.

Если вы хотите получить IP-адрес подключенного клиента на сервере, просто получите эту информацию из сокета с помощью Разъем.Свойство RemoteEndPoint (System.Net.Sockets)[^].


Рейтинг:
2

F-ES Sitecore

Быстрый поиск в google покажет, что это очень часто задаваемый вопрос, и ответ никогда не меняется...то, что вы хотите сделать, невозможно из-за того, как работает интернет.


Richard Deeming

Получить локальный IP-адрес невозможно, и эта информация была бы бесполезна, даже если бы вы могли это сделать.

Получение публичного IP-адреса, с которого был отправлен запрос является возможно, хотя он идентифицирует только сеть, а не компьютер.

Вопрос не совсем ясен, но я предполагаю, что "публичный IP-адрес клиента" означает, что ОП ищет публичный IP-адрес сети, из которой был получен запрос.