.NET Framework 2.0からは、IPGlobalProperties.GetIPGlobalPropertiesメソッドで取得できるIPGlobalPropertiesオブジェクトにより、ローカルコンピュータのネットワーク接続に関する様々な情報を取得できます。
まずは、IPGlobalPropertiesのプロパティからホスト名やドメイン名などの情報を表示する例を示します。
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)
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クラスのプロパティ | 説明 |
---|---|
DhcpScopeName | DHCP (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接続に関する情報を表示しています。
'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
//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トラフィック統計情報を表示しています。
'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)
//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) 統計データを提供します。 |
MSDNによると、IPGlobalPropertiesクラスの提供する情報は、Internet Protocol Helper APIの関数によって提供される情報と同じということです。
Helper APIをVB.NETやC#で使用する具体例に関しては、以下のページをご覧ください。
注意:この記事では、基本的な事柄の説明が省略されているかもしれません。初心者の方は、特に以下の点にご注意ください。