編集: ちょうどこれを見つけた.ローカル IP アドレスのクエリ は、よりクリーンな方法のように見えます。好きなのを選びな...
私は刺すつもりです...うまくいけば、あなたを近づけます。テスト マシンに接続されているアダプターは 1 つしかありませんが、これは複数のアダプターを備えたマシンで動作すると思います (希望)。
// Get all profiles
var profiles = NetworkInformation.GetConnectionProfiles();
// filter out profiles that are not currently online
var connected = from p in profiles where p.GetNetworkConnectivityLevel() != NetworkConnectivityLevel.None select p;
// find all hosts
var hosts = NetworkInformation.GetHostNames();
// find hosts that have an IP Address
var online = from h in hosts where h.IPInformation != null select h;
// Now loop there each online connection and match network adapter ids with hosts
foreach (var c in connected)
{
var matches = from o in online where o.IPInformation.NetworkAdapter.NetworkAdapterId == c.NetworkAdapter.NetworkAdapterId select o;
}
ここでの唯一の問題は、1 つの物理アダプターが実際には IPv4 アドレスに対して 1 回、IPv6 アドレスに対して 1 回表示されることです。追加の手順を実行して、それらを相互に関連付ける必要があります。うまくいけば、これはあなたが探しているものです。