プログラムによるパブリック 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 中国語 Web サイトの他の関連記事を参照してください。