如题

解决方案 »

  1.   


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

  2.   

    楼上没看我的意思吗
    我是要发ARP广播包,不是点对点地发
      

  3.   

    Remoting 去广播吧,网上有例子
    http://www.cnblogs.com/wayfarer/articles/75213.html