複数のIPアドレスがPCに割り当てられている場合、つまりPCがマルチホームの場合、127.0.0.1ループバックアドレスを除いてどのようにデフォルトIPアドレスを取得できますか?PCに複数のIPアドレスが割り当てられている場合のデフォルトIPアドレスの取得方法
次のコードは、1つのPCで正しいデフォルトIPアドレスを返しますが、別のPCで不正なIPアドレスを返すため、他の解決策が必要です。
private string[] GetDefaultIPWithSubnet()
{
ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
ManagementObjectCollection moc = mc.GetInstances();
string[] ipSubnet = new string[2];
foreach (ManagementObject mo in moc)
{
if ((bool)mo["IPEnabled"])
{
try
{
string[] ips = (string[])mo["IPAddress"];
string[] subnets = (string[])mo["IPSubnet"];
ipSubnet[0] = ips[0].ToString();
ipSubnet[1] = subnets[0].ToString();
break;
}
catch (Exception ex)
{
return null;
}
}
}
return ipSubnet;
}
マシンのデフォルトIPアドレスの定義とは何ですか?私は127.0.0.1と言いますが、あなたは何か他のものが必要かもしれません... PS:これを見てみるといいかもしれません:http://msdn.microsoft.com/en-us/library/system.net.networkinformation.networkinterface .aspx –
ここでは、127.0.0.1のループバックアドレスを除いてLAN /インターネットで使用しているものを示しました。 – Coder
また、2つのネットワークインターフェイスがある場合は、サーバーマシンでは非常に一般的です。どちらがデフォルトのものですか?私は方向性であなたを指し示そうとしているので、そのようなことは理解できません。あなたはすべてのIPアドレスを取得し、あなたが興味を持っているものを見つけなければなりません。 –