C#獲取IP及MAC地址 方法,比較齊全
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); //獲取本機的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(); } 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")); } }