ローカルマシン の IPアドレス、MACアドレス、コンピューター名、ログイン中ユーザー名 を取得する サンプルコード を掲載します。 どちらかと言うと、クライアントアプリ側に対する実装での利用を想定しています。
目次
IPアドレス
最近は IPv4 だけでなく、 IPv6 も考慮しないといけないですし、PC 1台 に必ずしも 1つ の ネットワークカード とも限りません(ノートPC で 無線 と 有線 の2ポート等)。 また、物理的な ネットワークインターフェース 1つ に対して 複数のIPアドレス を設定することもできます。 ここでは すべての "有効な" ネットワークインターフェース に対して、 IPv4、IPv6 関わらずすべての IPアドレス を取得するようなコードを記載します。
"有効な" インターフェース のみを取得するようにしているのは、実際に取得したIPアドレスを利用しようとした際(Socket通信とかしようとした際)、有効なインターフェースに対してでしか利用できないからです。
using System; using System.Collections.Generic; using System.Net; using System.Net.NetworkInformation; using System.Net.Sockets; public List<IPAddress> GetLocalIPAddress() { var ipaddress = new List(); // 物理インターフェース情報をすべて取得 var interfaces = NetworkInterface.GetAllNetworkInterfaces(); // 各インターフェースごとの情報を調べる foreach (var adapter in interfaces) { // 有効なインターフェースのみを対象とする if (adapter.OperationalStatus != OperationalStatus.Up) { continue; } // インターフェースに設定されたIPアドレス情報を取得 var properties = adapter.GetIPProperties(); // 設定されているすべてのユニキャストアドレスについて foreach (var unicast in properties.UnicastAddresses) { if (unicast.Address.AddressFamily == AddressFamily.InterNetwork) { // IPv4アドレス ipaddress.Add(unicast.Address); } else if (unicast.Address.AddressFamily == AddressFamily.InterNetworkV6) { // IPv6アドレス ipaddress.Add(unicast.Address); } } } return ipaddress; }
MACアドレス
IPアドレス の取得と似ていますが、MACアドレス は 物理的な インターフェース 1つ に対して必ず 1つ しか存在しないのでやや簡単なコードになります。
using System; using System.Collections.Generic; using System.Net; using System.Net.NetworkInformation; using System.Net.Sockets; public ListGetLocalPhysicalAddress() { var macaddress = new List (); // 物理インターフェース情報をすべて取得 var interfaces = NetworkInterface.GetAllNetworkInterfaces(); // 各インターフェースごとの情報を調べる foreach (var adapter in interfaces) { // 有効なインターフェースのみを対象とする if (adapter.OperationalStatus != OperationalStatus.Up) { continue; } // MACアドレス macaddress.Add(adapter.GetPhysicalAddress()); } return macaddress; }
コンピューター名
コンピューター名は Environment クラス
のプロパティから取得できます。
using System; public string GetLocalMachineName() { return Environment.MachineName; }
ログインユーザー名
ログインユーザー名 は コンピューター名と同様に Environment クラス
のプロパティから取得できます。
using System; public string GetLocalUserName() { return Environment.UserName; }
最後に… このブログに興味を持っていただけた方は、 ぜひ 「Facebookページ に いいね!」または 「Twitter の フォロー」 お願いします!!