以程式方式存取您的公用 IP 位址
以程式設計方式決定路由器的公用 IP 位址可能很棘手。 本文探討了在不依賴外部服務的情況下實現此目的的幾種方法。
C# 實作(非同步)
此 C# 範例利用 HttpClient
類別和非同步方法來實現高效的 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>
C# 實作(使用 WebClient - 不太首選)
雖然可以使用,但 WebClient
類別被認為已過時。 這是一個更簡單的比較範例:
<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>
命令列替代方案
為了更快檢索,請考慮以下命令列選項:
wget -qO- http://bot.whatismyipaddress.com
curl http://ipinfo.io/ip
這些方法提供了多種方法來以程式設計方式取得您的公用 IP 位址。 現代 C# 開發建議使用非同步 HttpClient
方法。
以上是如何以程式設計方式檢索我的公用 IP 位址?的詳細內容。更多資訊請關注PHP中文網其他相關文章!