ホームページ >バックエンド開発 >C++ >パブリック IP アドレスをプログラムで取得するにはどうすればよいですか?

パブリック IP アドレスをプログラムで取得するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2025-01-18 11:07:12831ブラウズ

How Can I Retrieve My Public IP Address Programmatically?

プログラムによるパブリック 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>

コマンドラインの代替手段

より迅速に取得するには、次のコマンドライン オプションを検討してください。

  • Linux および Windows: wget -qO- http://bot.whatismyipaddress.com
  • curl の使用: curl http://ipinfo.io/ip

これらのメソッドは、プログラムによってパブリック IP アドレスを取得するためのさまざまなアプローチを提供します。 最新の C# 開発には、非同期 HttpClient メソッドが推奨されます。

以上がパブリック IP アドレスをプログラムで取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。