zoukankan      html  css  js  c++  java
  • C#獲取IP/MAC地址

    如果要想获得远程的地址,需要用sendarp这个函数来实现。具体的代码如下:

     使用的命名空間:

    using System.Runtime.InteropServices;
    using System.Net;
    using System.Management;

      public  class IPHelper
        {

            [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);

     /// <summary>    

      /// 獲取當地的IP地址       

      /// </summary>      

          public static string GetLocalIP()       

      {          

         string strHostName = Dns.GetHostName(); //得到本机的主机名

         IPHostEntry ipEntry = Dns.GetHostByName(strHostName); //取得本机IP

           string strAddr = ipEntry.AddressList[0].ToString();      

           return (strAddr);       

      }

            /// <summary>     

        /// 獲取當地MAC地址       

      /// </summary>       

         public static 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);    

         }

           /// <summary>       

      /// 獲取遠程IP地址    

        /// </summary>        

    /// <param name="RemoteHostName"></param>     

        /// <returns></returns>     

        public static 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);     

        }

            /// <summary>     

        /// 獲取遠程MAC地址     

        /// </summary>       

      /// <param name="localIP"></param>     

        /// <param name="remoteIP"></param>    

         /// <returns></returns>        

    public static 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();       

      }   

      }

    網上其他參考:http://www.cnblogs.com/qixuejia/archive/2011/01/12/1933442.html

    http://www.cnblogs.com/diulela/archive/2012/04/07/2436111.html

    多一分冷靜,少一分浮躁
  • 相关阅读:
    英语八级之路
    ASP.NET MVC 简易在线书店
    MySql 笔记
    自定义函数标签(JSTL)
    自定义标签(JSTL)
    Xml读取异常--Invalid byte 1 of 1-byte UTF-8 sequence
    JSTL核心标签库
    JSTL简介
    修改Servlet模板
    获取GET/POST提交的数据,并处理中文问题
  • 原文地址:https://www.cnblogs.com/AnnyGird-LiMing/p/5261756.html
Copyright © 2011-2022 走看看