我的电脑在局域网内的IP是192.168.0.90
请问C#如何能取得这个IP地址呢???

解决方案 »

  1.   

    可以
    1、你访问web,web可以request到
    2、c#程序本地运行,调用句柄,也可以
    public class getIP
        {
            [DllImport("Iphlpapi.dll")]
            private static extern int SendARP(Int32 dest, Int32 host, ref Int64 mac, ref Int32 length);
            [DllImport("Ws2_32.dll")]
            private static extern Int32 inet_addr(string ip);        //获取本机的IP
            public string getLocalIP()
            {
                string strHostName = Dns.GetHostName();  //得到本机的主机名
                IPHostEntry ipEntry = Dns.GetHostByName(strHostName); //取得本机IP
                string strAddr = ipEntry.AddressList[0].ToString();
                return (strAddr);
            }
            //获取本机的MAC
            public string getLocalMac()
            {
                string mac = null;
                ManagementObjectSearcher query = new ManagementObjectSearcher("SELECT * FROM Win32_NetworkAdapterConfiguration");
                ManagementObjectCollection queryCollection = query.Get();
                foreach (ManagementObject mo in queryCollection)
                {
                    if (mo["IPEnabled"].ToString() == "True")
                        mac = mo["MacAddress"].ToString();
                }
                return (mac);
            }        //获取远程主机IP
            public string[] getRemoteIP(string RemoteHostName)
            {
                IPHostEntry ipEntry = Dns.GetHostByName(RemoteHostName);
                IPAddress[] IpAddr = ipEntry.AddressList;
                string[] strAddr = new string[IpAddr.Length];
                for (int i = 0; i < IpAddr.Length; i++)
                {
                    strAddr[i] = IpAddr[i].ToString();
                }
                return (strAddr);
            }
            //获取远程主机MAC
            public string getRemoteMac(string localIP, string remoteIP)
            {
                Int32 ldest = inet_addr(remoteIP); //目的ip
                Int32 lhost = inet_addr(localIP); //本地ip            try
                {
                    Int64 macinfo = new Int64();
                    Int32 len = 6;
                    int res = SendARP(ldest, 0, ref macinfo, ref len);
                    return Convert.ToString(macinfo, 16);
                }
                catch (Exception err)
                {
                    Console.WriteLine("Error:{0}", err.Message);
                }
                return 0.ToString();
            }
        }
      

  2.   

    楼上的这个方法可以
    public string getLocalIP()
    {
      string strHostName = Dns.GetHostName(); //得到本机的主机名
      IPHostEntry ipEntry = Dns.GetHostByName(strHostName); //取得本机IP
      string strAddr = ipEntry.AddressList[0].ToString();
      return (strAddr);
    }
    但要注意的是,当你的机器存在多个网卡/连接方式时,就需要再具体判断一下了,
    因为这个时候AddressList会有多个项,即使只有单网卡,其中还是会包含IPv6的IP(开启了IPv6后)
      

  3.   

    Dns.GetHostName(); 
    IPHostEntry ipEntry = Dns.GetHostByName(strHostName);