.net でアクティブな IPAddress を取得しようとしています。この場合は、イーサネット アダプターに関連付けられたアドレスです。
これで、現在マシンに割り当てられている IP のリストを取得できることがわかりました。
IPHostEntry entry = Dns.GetHostEntry(Dns.GetHostName());
そして、次を使用して、さまざまなネットワーク インターフェイスに関する多くの情報を取得できることを知っています。
NetworkInterface[] networks = NetworkInterface.GetAllNetworkInterfaces();
NetworkInterfaceType enum を使用して、これらのインターフェイスのどれが私のイーサネット インターフェイスであるか、インターフェイスが「アップ」しているかどうかを判断できますが、この NetworkInterface を対応する IPAddress に関連付ける方法が見つからないようです。NetworkInterface クラス内からは、エニーキャスト アドレスやゲートウェイ アドレスなどを取得する方法しかわかりませんが、自分のイーサネット IP を絞り込むのに役立つものは何もありません。
単純か複雑かを問わず、これを行う方法を知っている人はいますか?
編集: たとえば、コマンド ラインの netstat または tracert は、すべてのアクティブなネットワーク接続を提供できます。.net がこれに似たものを持っていないのは奇妙に思えますが、コマンドラインの結果を解析する必要はまったくないようです。GetBestInterface() のようなものは便利に思えますが、特定の他の IP にアクセスできる IP でのみ返されます。繰り返しますが、あまり多用途ではありません。
C# を使用してアクティブな IPAdresses を取得する方法が他にない場合は、コマンド ラインを使用しますが、実際には、一般的なプログラミング言語で実行できるはずのことのように思えます。実際、誰かが C++ または C ソリューションを持っていれば、それを私の C# アプリに接続することもできます。