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/