6

インターネットへのアクセスに使用されているマシンのネットワーク アダプターの IPv4 アドレスを見つける信頼できる方法があるかどうか疑問に思っています (サーバーをバインドしたいのはこれであるため)。以前は、次のようなローカル IP アドレスのリストを取得していました。

IPAddress ip = System.Net.Dns.GetHostByName(Environment.MachineName).AddressList[0];

そして、それはうまくいきましたが、私が探していたIPアドレスがこのアドレスリストの最初のものではなく3番目のものだったので、今日は失敗しました(2つの仮想マシンを実行していて、これらの両方が仮想アダプタを作成したため)。

アドバイスをいただければ幸いです。

4

1 に答える 1

8
IPAddress ip = System.Net.Dns.GetHostEntry(Environment.MachineName).AddressList.Where(i => i.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork).FirstOrDefault();

別の方法として、次を使用できます。

using System.Net.NetworkInformation;

//...

var local = NetworkInterface.GetAllNetworkInterfaces().Where(i => i.Name == "Local Area Connection").FirstOrDefault();
var stringAddress = local.GetIPProperties().UnicastAddresses[0].Address.ToString();
var ipAddress = IPAddress.Parse(stringAddress);

"Local Area Connection"をアダプターの名前に置き換えるだけですControl Panel\Network and Internet\Network Connections

于 2012-12-05T14:56:30.803 に答える