0

ローカル IP アドレスを調べる必要があるため、次のコードを使用していました。

IPHostEntry host;
string localIP = "";
host = Dns.GetHostEntry(Dns.GetHostName());
foreach (IPAddress ip in host.AddressList)
{
    if (ip.AddressFamily == AddressFamily.InterNetwork)
    {
        localIP = ip.ToString();
        break;
    }
}
return localIP;

PC に複数の IP がある場合、AddressFamily.InterNetwork常に最初の IP が取得されることがわかりました。ただし、アクティブな IP を見つけるためのプロパティが見つかりません。

正しい IP を取得するにはどうすればよいですか?

ヒントをありがとう!

4

3 に答える 3

0
    static string GetActiveIP()
            {
                string ip = "";
                foreach (NetworkInterface f in NetworkInterface.GetAllNetworkInterfaces())
                {
                    if (f.OperationalStatus == OperationalStatus.Up)
                    {
                        IPInterfaceProperties ipInterface = f.GetIPProperties();
                        if (ipInterface.GatewayAddresses.Count > 0)
                        {`enter code here`
                            foreach (UnicastIPAddressInformation unicastAddress in ipInterface.UnicastAddresses)
                            {
                                if ((unicastAddress.Address.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork) && (unicastAddress.IPv4Mask.ToString() != "0.0.0.0"))
                                {
                                    ip = unicastAddress.Address.ToString();
break;

                                }                          
                            }`enter code here`
                        }


                    }
                }
                return ip;
            }
于 2014-04-22T13:58:09.560 に答える