87 votes

Obtenir une adresse IP publique/externe ?

Je ne parviens pas à obtenir ou à trouver des informations sur l'IP publique de mon routeur. Est-ce parce que cela ne peut pas être fait de cette façon et qu'il faudrait l'obtenir à partir d'un site Web ?

0 votes

Quelle est cette façon de faire ? Essayez-vous de faire cela de manière programmatique ?

1 votes

Avec le CGN, il est possible que votre routeur n'ait pas d'adresse publique.

124voto

user129206 Points 1026

En utilisant C#, avec webclient, c'est court.

public static void Main(string[] args)
{
    string externalIpString = new WebClient().DownloadString("http://icanhazip.com").Replace("\\r\\n", "").Replace("\\n", "").Trim();
    var externalIp = IPAddress.Parse(externalIpString);

    Console.WriteLine(externalIp.ToString());
}

Ligne de commande (fonctionne à la fois sur Linux et Windows)

wget -qO- http://bot.whatismyipaddress.com

OU

curl http://ipinfo.io/ip

0 votes

404 sur le second.

10 votes

Excellente réponse ! Au fait, j'ai dû appeler Trim() sur le résultat de http://ipinfo.io/ip . Il y avait un espace à la fin.

3 votes

Cela permettra d'obtenir le du serveur adresse IP au lieu de celle de l'utilisateur.

74voto

filippakoc Points 321
static void Main(string[] args)
{
    HTTPGet req = new HTTPGet();
    req.Request("http://checkip.dyndns.org");
    string[] a = req.ResponseBody.Split(':');
    string a2 = a[1].Substring(1);
    string[] a3=a2.Split('<');
    string a4 = a3[0];
    Console.WriteLine(a4);
    Console.ReadLine();
}

Faites ce petit tour avec Vérifier l'IP DNS

Utilice HTTPGet cours que j'ai trouvé sur Goldb-Httpget C#

0 votes

HttpGet n'existe pas, alternative ?

41voto

r.zarei Points 405

Avec .Net WebRequest :

  public static string GetPublicIP()
    {
        string url = "http://checkip.dyndns.org";
        System.Net.WebRequest req = System.Net.WebRequest.Create(url);
        System.Net.WebResponse resp = req.GetResponse();
        System.IO.StreamReader sr = new System.IO.StreamReader(resp.GetResponseStream());
        string response = sr.ReadToEnd().Trim();
        string[] a = response.Split(':');
        string a2 = a[1].Substring(1);
        string[] a3 = a2.Split('<');
        string a4 = a3[0];
        return a4;
    }

40voto

suneel ranga Points 419
string pubIp =  new System.Net.WebClient().DownloadString("https://api.ipify.org");

28voto

Utiliser un excellent service similaire

private string GetPublicIpAddress()
{
    var request = (HttpWebRequest)WebRequest.Create("http://ifconfig.me");

    request.UserAgent = "curl"; // this will tell the server to return the information as if the request was made by the linux "curl" command

    string publicIPAddress;

    request.Method = "GET";
    using (WebResponse response = request.GetResponse())
    {
        using (var reader = new StreamReader(response.GetResponseStream()))
        {
            publicIPAddress = reader.ReadToEnd();
        }
    }

    return publicIPAddress.Replace("\n", "");
}

1 votes

Ifconfig.me ce domaine est parfait

0 votes

Private string GetPublicIpAddress() { using var client = new WebClient() ; return client.DownloadString(" ifconfig.me").Remplacer.Replace) (" \n ", "") ; }

1 votes

Une alternative plus actuelle : public static string GetPublicIPv4Address() => new System.Net.Http.HttpClient().GetStringAsync("http://ifconfig‌​.me").GetAwaiter().G‌​etResult().Replace("‌​\n", "");

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X