C#获取IP及MAC地址的新方法

    技术2022-05-19  18

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

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

    //获取本机的IPpublic string getLocalIP(){   string strHostName = Dns.GetHostName(); //得到本机的主机名   IPHostEntry ipEntry = Dns.GetHostByName(strHostName); //取得本机IP   string strAddr = ipEntry.AddressList[0].ToString();   return(strAddr);}//获取本机的MACpublic 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);}

    //获取远程主机IPpublic 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);}//获取远程主机MACpublic 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();}

    public static void Main(string[] args){   getIP gi = new getIP();   Console.WriteLine("本地网卡信息:");   Console.WriteLine(gi.getLocalIP() + " - " + gi.getLocalMac());      Console.WriteLine("/n/r远程网卡信息:");   string[] temp = gi.getRemoteIP("scmobile-tj2");   for(int i=0;i<TEMP.LENGTH;I++)   {         Console.WriteLine(temp[i]);   }   Console.WriteLine(gi.getRemoteMac("192.168.0.3","192.168.0.1"));}}

     

    转自:http://qufu999.blog.163.com/blog/static/385542352009111713345122/


    最新回复(0)