DOBON.NET

コンピュータのネットワーク接続に関する構成、統計情報を取得する

IPGlobalProperties.GetIPGlobalPropertiesメソッドを使用する

.NET Framework 2.0からは、IPGlobalProperties.GetIPGlobalPropertiesメソッドで取得できるIPGlobalPropertiesオブジェクトにより、ローカルコンピュータのネットワーク接続に関する様々な情報を取得できます。

まずは、IPGlobalPropertiesのプロパティからホスト名やドメイン名などの情報を表示する例を示します。

VB.NET
コードを隠すコードを選択
Dim ipprop As System.Net.NetworkInformation.IPGlobalProperties = _
    System.Net.NetworkInformation.IPGlobalProperties.GetIPGlobalProperties()

Console.WriteLine("ホスト名:{0}", ipprop.HostName)
Console.WriteLine("ドメイン名:{0}", ipprop.DomainName)
Console.WriteLine("DHCPスコープ名:{0}", ipprop.DhcpScopeName)
Console.WriteLine("WINSプロキシか:{0}", ipprop.IsWinsProxy)
Console.WriteLine("NetBIOSノードタイプ:{0}", ipprop.NodeType)
C#
コードを隠すコードを選択
System.Net.NetworkInformation.IPGlobalProperties ipprop =
    System.Net.NetworkInformation.IPGlobalProperties.GetIPGlobalProperties();

Console.WriteLine("ホスト名:{0}", ipprop.HostName);
Console.WriteLine("ドメイン名:{0}", ipprop.DomainName);
Console.WriteLine("DHCPスコープ名:{0}", ipprop.DhcpScopeName);
Console.WriteLine("WINSプロキシか:{0}", ipprop.IsWinsProxy);
Console.WriteLine("NetBIOSノードタイプ:{0}", ipprop.NodeType);

MSDN「IPGlobalProperties クラス」によると、IPGlobalPropertiesのプロパティとその意味は、次のようなものです。

IPGlobalPropertiesクラスのプロパティ説明
DhcpScopeNameDHCP (Dynamic Host Configuration Protocol) スコープ名を取得します。
DomainNameローカル コンピュータが登録されているドメインを取得します。ドメインに属していない場合は、空白文字("")が返されます。
HostNameローカル コンピュータのホスト名(コンピュータの NetBIOS 名)を取得します。
IsWinsProxyローカル コンピュータが、WINS (Windows Internet Name Service) プロキシとして動作しているかどうかを指定する Boolean 値を取得します。
NodeTypeローカル コンピュータの NetBIOS (Network Basic Input/Output System) ノード タイプを取得します。Broadcast(ブロードキャスト ノード)、Hybrid(ハイブリッド ノード)、Mixed(混合ノード)、Peer2Peer(ピアツーピア ノード)、Unknown(不明なノード タイプ)のいずれかです。

アクティブな接続、リスナの情報を取得する

IPGlobalPropertiesにより、現在アクティブなTCP接続、リスナ、UDPリスナの情報を取得することもできます。以下の例では、ローカルコンピュータ上のアクティブなIPv4 TCP接続に関する情報を表示しています。

VB.NET
コードを隠すコードを選択
'IPGlobalPropertiesを取得
Dim ipprop As System.Net.NetworkInformation.IPGlobalProperties = _
    System.Net.NetworkInformation.IPGlobalProperties.GetIPGlobalProperties()
'TcpConnectionInformationの配列を取得
Dim infos As System.Net.NetworkInformation.TcpConnectionInformation() = _
    ipprop.GetActiveTcpConnections()
'TCP接続に関する情報を列挙する
Dim info As System.Net.NetworkInformation.TcpConnectionInformation
For Each info In infos
    Console.WriteLine("ローカルアドレス:{0}", info.LocalEndPoint)
    Console.WriteLine("リモートアドレス:{0}", info.RemoteEndPoint)
    Console.WriteLine("状態:{0}", info.State)
Next info
C#
コードを隠すコードを選択
//IPGlobalPropertiesを取得
System.Net.NetworkInformation.IPGlobalProperties ipprop =
    System.Net.NetworkInformation.IPGlobalProperties.GetIPGlobalProperties();
//TcpConnectionInformationの配列を取得
System.Net.NetworkInformation.TcpConnectionInformation[] infos =
    ipprop.GetActiveTcpConnections();
//TCP接続に関する情報を列挙する
foreach (System.Net.NetworkInformation.TcpConnectionInformation info in infos)
{
    Console.WriteLine("ローカルアドレス:{0}", info.LocalEndPoint);
    Console.WriteLine("リモートアドレス:{0}", info.RemoteEndPoint);
    Console.WriteLine("状態:{0}", info.State);
}

アクティブな接続、リスナの情報を取得するために使われるIPGlobalPropertiesクラスのメソッドとその簡単な説明を以下にまとめます(MSDN「IPGlobalProperties クラス」からの抜粋)。

IPGlobalPropertiesクラスのメソッド説明
GetActiveTcpConnectionsローカル コンピュータ上のインターネット プロトコル Version 4 (IPv4: Internet Protocol version 4) 伝送制御プロトコル (TCP: Transmission Control Protocol) 接続に関する情報を返します。返される情報には、Listen 状態を除くすべての TCP 状態にある接続が含まれます。
GetActiveTcpListenersローカル コンピュータ上のインターネット プロトコル Version 4 (IPv4) 伝送制御プロトコル (TCP) リスナに関するエンドポイント情報を返します。返される情報には、Listen 状態を除くすべての TCP 状態にあるリスナが含まれます。
GetActiveUdpListenersローカル コンピュータ上のインターネット プロトコル Version 4 (IPv4) ユーザー データグラム プロトコル (UDP: User Datagram Protocol) リスナに関する情報を返します。

統計情報を取得する

さらに、IPGlobalPropertiesでネットワークの統計情報を取得することもできます。以下の例では、ローカルコンピュータのIPv4トラフィック統計情報を表示しています。

VB.NET
コードを隠すコードを選択
'IPGlobalPropertiesを取得
Dim ipprop As System.Net.NetworkInformation.IPGlobalProperties = _
    System.Net.NetworkInformation.IPGlobalProperties.GetIPGlobalProperties()
'IPv4のトラフィック統計情報を取得する
Dim stat As System.Net.NetworkInformation.IPGlobalStatistics = _
    ipprop.GetIPv4GlobalStatistics()
'情報を表示する
Console.WriteLine("送信IPパケット数:{0}", stat.OutputPacketRequests)
Console.WriteLine("受信IPパケット数:{0}", stat.ReceivedPackets)
C#
コードを隠すコードを選択
//IPGlobalPropertiesを取得
System.Net.NetworkInformation.IPGlobalProperties ipprop =
    System.Net.NetworkInformation.IPGlobalProperties.GetIPGlobalProperties();
//IPv4のトラフィック統計情報を取得する
System.Net.NetworkInformation.IPGlobalStatistics stat =
    ipprop.GetIPv4GlobalStatistics();
//情報を表示する
Console.WriteLine("送信IPパケット数:{0}", stat.OutputPacketRequests);
Console.WriteLine("受信IPパケット数:{0}", stat.ReceivedPackets);

IPGlobalPropertiesクラスで統計情報を取得するために使われるメソッドとその簡単な説明を以下にまとめます(MSDN「IPGlobalProperties クラス」からの抜粋)。

IPGlobalPropertiesクラスのメソッド説明
GetIcmpV4Statisticsローカル コンピュータのインターネット コントロール メッセージ プロトコル (ICMP: Internet Control Message Protocol) Version 4 の統計データを提供します。
GetIcmpV6Statisticsローカル コンピュータのインターネット コントロール メッセージ プロトコル (ICMP) Version 6 の統計データを提供します。
GetIPv4GlobalStatisticsローカル コンピュータのインターネット プロトコル Version 4 (IPv4) 統計データを提供します。
GetIPv6GlobalStatisticsローカル コンピュータのインターネット プロトコル Version 6 (IPv6) 統計データを提供します。
GetTcpIPv4Statisticsローカル コンピュータの伝送制御プロトコル/インターネット プロトコル Version 4 (TCP/IPv4) 統計データを提供します。
GetTcpIPv6Statisticsローカル コンピュータの伝送制御プロトコル/インターネット プロトコル Version 6 (TCP/IPv6) 統計データを提供します。
GetUdpIPv4Statisticsローカル コンピュータの UDP/IPv4 (User Datagram Protocol / Internet Protocol version 4) 統計データを提供します。
GetUdpIPv6Statisticsローカル コンピュータの UDP/IPv6 (User Datagram Protocol / Internet Protocol version 6) 統計データを提供します。

Helper APIを使用する

MSDNによると、IPGlobalPropertiesクラスの提供する情報は、Internet Protocol Helper APIの関数によって提供される情報と同じということです。

Helper APIをVB.NETやC#で使用する具体例に関しては、以下のページをご覧ください。

注意:この記事では、基本的な事柄の説明が省略されているかもしれません。初心者の方は、特に以下の点にご注意ください。

  • .NET Tipsをご利用いただく際は、注意事項をお守りください。
共有する

この記事への評価

この記事へのコメント

この記事に関するコメントを投稿するには、下のボタンをクリックしてください。投稿フォームへ移動します。通常のご質問、ご意見等は掲示板へご投稿ください。