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
Libérer: 2025-01-18 11:07:12
original
917 Les gens l'ont consulté

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 :

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);
    }
}
Copier après la connexion

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 :

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);
    }
}
Copier après la connexion

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 de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal