2

たとえば、3 つの仮想マシン (VM Ware) がインストールされているコンピューターの現在の IP アドレスを取得したいと考えています。そのパソコンのLANアドレスを取得したいです。

私が持っている現在のコードは配列を返しますが、現在のコンピューターのLANアドレスを特定する方法は?

public static string getThisCompIPAddress()
    {
        IPAddress[] addresslist = Dns.GetHostAddresses(Dns.GetHostName());
        return (addresslist[0].ToString());


    }

addresslist は 3 つの IP アドレスの配列を返します

4

3 に答える 3

3

NetworkInterfaceクラスを試して、LAN 接続の名前または物理アドレスを照合して、実際のものを見つけることができます。おそらく、このクラスとそのメンバー内で検索すると、ニーズに合ったものを見つけることができます。

以下は、いくつかの使用情報を提供する簡単な方法です。

using System.Net.NetworkInformation;

...

static void ViewNetworkInfo()
{
    NetworkInterface[] networks = NetworkInterface.GetAllNetworkInterfaces();
    foreach (NetworkInterface nw in networks)
    {
        Console.WriteLine(nw.Name);
        Console.WriteLine(nw.GetPhysicalAddress().ToString());

        IPInterfaceProperties ipProps = nw.GetIPProperties();
        foreach (UnicastIPAddressInformation ucip in ipProps.UnicastAddresses)
        {  
            Console.WriteLine(ucip.Address.ToString());
        } 

        Console.WriteLine();
     }
     Console.ReadKey();
}
于 2009-10-22T19:49:16.647 に答える
0
public static ArrayList getThisCompIPAddress()
    {
        ArrayList strArrIpAdrs = new ArrayList();
        ArrayList srtIPAdrsToReturn = new ArrayList();
        addresslist = Dns.GetHostAddresses(Dns.GetHostName());
        for (int i = 0; i < addresslist.Length; i++)
        {
            try
            {
                long ip = addresslist[i].Address;
                strArrIpAdrs.Add(addresslist[i]);
            }
            catch (Exception ex) 
            {
                Console.WriteLine(ex.Message);
            }

        }

        foreach (IPAddress ipad in strArrIpAdrs)
        {

            lastIndexOfDot = ipad.ToString().LastIndexOf('.');
            substring = ipad.ToString().Substring(0, ++lastIndexOfDot);
            if (!(srtIPAdrsToReturn.Contains(substring)) && !(substring.Equals("")))
            {
                srtIPAdrsToReturn.Add(substring);
            }
        }

        return srtIPAdrsToReturn;
    }

これは 100% 動作しています。本当の問題は、long を返す Address の計算中にエラーがスローされたことです。エラー コードは 10045 です

于 2009-10-23T12:29:57.947 に答える