そのマシンで実行されているコードからマシンのローカル イントラネット IP を取得しようとしています。これを行う決定的な方法はありますか?
すべての IP を取得して、10.0.0.0-10.255.255.255,172.16.0.0-172.31.255.255,192.168.0.0-192.168.255.255 でフィルタリングしようとしました。
Dns.GetHostEntry(Dns.GetHostName()).AddressList
しかし、これは私には少し魔法のようです.netが仕事をしたほうがいいです.VirtualBoxがインストールされているため、複数のIPも返します
私も次のことを試しました
var localAddress =
(
from ni in NetworkInterface.GetAllNetworkInterfaces()
where ni.NetworkInterfaceType != NetworkInterfaceType.Loopback
&& hostEntry.HostName.EndsWith(string.Concat(".", ni.Name))
let props = ni.GetIPProperties()
from unicastAddress in props.UnicastAddresses
where unicastAddress.Address.AddressFamily == AddressFamily.InterNetwork
select unicastAddress.Address).FirstOrDefault();
どちらが機能しますが、他のネットワーク構成でも機能しますか?
このビットは私に関係しますhostEntry.HostName.EndsWith(string.Concat(".", ni.Name))
誰かがより良い方法を手に入れましたか?