以编程方式访问您的公共 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中文网其他相关文章!