日期:2014-05-20 浏览次数:20868 次
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Management; using System.Runtime.InteropServices; using System.Net; namespace GetMac { class Program { [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(); } static void Main(string[] args) { Program gi = new Program(); Console.WriteLine("本地网卡信息:"); Console.WriteLine(gi.getLocalIP() + " - " + gi.getLocalMac()); Console.ReadKey(); Console.WriteLine("\n\r远程网卡信息:"); string[] temp = gi.getRemoteIP("WKS049");//目标机名 for (int i = 0; i < temp.Length; i++) { Console.WriteLine(temp[i]); } string remote = gi.getRemoteMac("13.0.0.26", "13.0.0.103");//本机IP和目标机IP StringBuilder b = new StringBuilder(); for (int i = remote.Length - 2; i >= 0; i = i - 2) { b.Append(remote.Substring(i, 2)); b.Append(":"); } if (b.Length > 1) { b.Remove(b.Length - 1, 1); } Console.Write(b); Console.ReadKey(); } } }