C#で現在のホストのIPアドレスを取得する方法

解決

ホスト名の取得

Dns クラスは、ドメイン ネーム システム (DNS) 操作用の静的メソッドのセットを提供します。

Dns.GetHostName();

Dns.GetHostName() メソッドを使用して、ローカル コンピューターのホスト名を取得できます。これは静的メソッドです。このメソッドは、オペレーティング システムのネットワーク スタックを呼び出して、コンピューターのホスト名を取得します。ホスト名は、ネットワーク上のデバイスを識別するために使用される名前です。ネットワーク上では各機器が固有のホスト名を持ち、そのホスト名を介して機器間の通信がネットワーク上で行われます。

IPアドレスを取得する

Dns.GetHostAddresses(hostName);

ホスト名を取得した後、Dns.GetHostAddresses(hostName) メソッドを使用して IP リストを取得します。これも、指定されたホスト名 (または IP アドレス文字列) に対応する IP アドレス リストを取得するために使用される静的メソッドです。ホスト名または IP アドレスをパラメータとして受け取り、ホスト名または IP アドレスに関連付けられたすべての IP アドレスを含む IPAddress[] 配列を返します。

このメソッドは、まずパラメータで渡されたホスト名の解決を試みます。有効なホスト名が渡されると、DNS サーバーにクエリを実行して、そのホスト名に対応する IP アドレスを見つけます。関連する IP アドレスが見つかった場合は、これらの IP アドレスを含む配列が返されます。

さらに、受信パラメータが有効な IP アドレス文字列 (例: "192.168.0.1") の場合、メソッドはその文字列を直接解析して IPAddress オブジェクトにし、それを配列に入れて返します。

解析プロセス中に問題やアクセス制限が発生した場合、このメソッドは SocketException や SecurityException などの例外をスローします。

IPv4アドレスのフィルタリング

IPv4 アドレスは、列挙値 AddressFamily.InterNetwork を通じてフィルタリングできます。

AddressFamily は、さまざまなネットワーク アドレス タイプを定義する列挙型です。このうち、InterNetwork は IPv4 アドレス、InterNetworkV6 は IPv6 アドレス、Unix は Unix ドメイン ソケット アドレスなどを表します。

関数

using System.Collections.Generic;
using System.Text;
using System.Net.Sockets;
using System.Net;
using System;

public static List<string> GetIPv4Addresses()
{
    
    
    string hostName = Dns.GetHostName();
    IPAddress[] addresses = Dns.GetHostAddresses(hostName);

    List<string> ipv4Addresses = new List<string>();

    foreach (IPAddress address in addresses)
    {
    
    
        // 判断是否为IPv4地址
        if (address.AddressFamily == AddressFamily.InterNetwork)
        {
    
    
            ipv4Addresses.Add(address.ToString());
        }
    }

    return ipv4Addresses;
}

この関数は見つかったすべての IPv4 アドレスを返します。呼び出し後、見つかったすべての IPv4 アドレスを含むリストが取得されます。IPv4 アドレスが見つからない場合は、空のリストが返されます。

関数呼び出し

見つかったすべての IPv4 アドレスを出力します。
関数呼び出しは次のとおりです。

List<string> ipv4Addresses = GetIPv4Addresses();

foreach (string address in ipv4Addresses)
{
    
    
    Console.WriteLine(address);
}

おすすめ

転載: blog.csdn.net/weixin_44499065/article/details/132311154