Home >Backend Development >C++ >How Can I Retrieve My Public IP Address Programmatically?

How Can I Retrieve My Public IP Address Programmatically?

Linda Hamilton
Linda HamiltonOriginal
2025-01-18 11:07:12873browse

How Can I Retrieve My Public IP Address Programmatically?

Accessing Your Public IP Address Programmatically

Determining your router's public IP address programmatically can be tricky. This article explores several methods to achieve this without relying on external services.

C# Implementation (Asynchronous)

This C# example utilizes the HttpClient class and an asynchronous method for efficient IP address retrieval:

<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>

C# Implementation (Using WebClient - Less Preferred)

While functional, the WebClient class is considered obsolete. Here's a simpler example for comparison:

<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>

Command-Line Alternatives

For quicker retrieval, consider these command-line options:

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

These methods provide various approaches to programmatically obtain your public IP address. The asynchronous HttpClient method is recommended for modern C# development.

The above is the detailed content of How Can I Retrieve My Public IP Address Programmatically?. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn