ローカルマシン の 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 の フォロー」 お願いします!!