Home >Backend Development >C++ >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:
wget -qO- http://bot.whatismyipaddress.com
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!