Maison >développement back-end >C++ >Comment puis-je récupérer mon adresse IP publique par programme ?

Comment puis-je récupérer mon adresse IP publique par programme ?

Linda Hamilton
Linda Hamiltonoriginal
2025-01-18 11:07:12874parcourir

How Can I Retrieve My Public IP Address Programmatically?

Accès à votre adresse IP publique par programmation

Déterminer l'adresse IP publique de votre routeur par programmation peut être délicat. Cet article explore plusieurs méthodes pour y parvenir sans recourir à des services externes.

Implémentation C# (asynchrone)

Cet exemple C# utilise la classe HttpClient et une méthode asynchrone pour une récupération efficace des adresses IP :

<code class="language-csharp">using System;
using System.Net.Http;
using System.Threading.Tasks;
using System.Net;

public class ExternalIP
{
    public static async Task<IPAddress> GetExternalIpAddressAsync()
    {
        string externalIpString;
        try
        {
            using (var client = new HttpClient())
            {
                externalIpString = await client.GetStringAsync("http://icanhazip.com");
            }
        }
        catch (Exception ex)
        {
            Console.WriteLine($"Error retrieving IP: {ex.Message}");
            return null;
        }

        externalIpString = externalIpString.Replace("\r\n", "").Replace("\n", "").Trim();
        if (IPAddress.TryParse(externalIpString, out var ipAddress))
        {
            return ipAddress;
        }
        return null;
    }

    public static void Main(string[] args)
    {
        Task<IPAddress> externalIpTask = GetExternalIpAddressAsync();
        externalIpTask.Wait();
        IPAddress externalIp = externalIpTask.Result ?? IPAddress.Loopback;

        Console.WriteLine(externalIp);
    }
}</code>

Implémentation C# (utilisation de WebClient - Moins préféré)

Bien que fonctionnelle, la classe WebClient est considérée comme obsolète. Voici un exemple plus simple à titre de comparaison :

<code class="language-csharp">using System;
using System.Net;

public class ExternalIP
{
    public static void Main(string[] args)
    {
        string externalIpString;
        try
        {
            using (var client = new WebClient())
            {
                externalIpString = client.DownloadString("http://icanhazip.com");
            }
        }
        catch (Exception ex)
        {
            Console.WriteLine($"Error retrieving IP: {ex.Message}");
            return;
        }

        externalIpString = externalIpString.Replace("\r\n", "").Replace("\n", "").Trim();
        IPAddress externalIp = IPAddress.Parse(externalIpString);

        Console.WriteLine(externalIp);
    }
}</code>

Alternatives en ligne de commande

Pour une récupération plus rapide, envisagez ces options de ligne de commande :

  • Linux et Windows : wget -qO- http://bot.whatismyipaddress.com
  • Utiliser curl : curl http://ipinfo.io/ip

Ces méthodes proposent diverses approches pour obtenir par programme votre adresse IP publique. La méthode asynchrone HttpClient est recommandée pour le développement C# moderne.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn