using System.Management;//获取IP,子网掩码(subnet mask)和默认网关
ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
ManagementObjectCollection nics = mc.GetInstances();
foreach(ManagementObject nic in nics)
{
  if(Convert.ToBoolean(nic["ipEnabled"]) == true)
  {    
  Console.WriteLine(Convert.ToString(nic["MACAddress"]));
   Console.WriteLine((nic["IPAddress"] as String[])[0]);
   Console.WriteLine((nic["IPSubnet"] as String[])[0]);
   Console.WriteLine((nic["DefaultIPGateway"] as String[])[0]);
  }
}

解决方案 »

  1.   

    using System;
    using System.Runtime.InteropServices;namespace UtilityControl
    {
    /// <summary>
    /// 关于IP地址的若干操作
    /// </summary>
    public class IP
    {
    public IP()
    {
    //
    // TODO: 在此处添加构造函数逻辑
    //
    } [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); /// <summary>
    /// 根据ip得到网卡mac地址
    /// </summary>
    /// <param name="ip">给出的ip地址</param>
    /// <returns>对应ip的网卡mac地址</returns>
    public static Int64 GetMACByIP(string ip) 

    Int32 ldest= inet_addr(ip); //目的地的ip 
    try 

    Int64 macinfo = new Int64(); 
    Int32 len = 6; 
    int res = SendARP(ldest,0, ref macinfo, ref len); 
    return macinfo; 

    catch(Exception err) 

    Console.WriteLine("Error:{0}",err.Message); 

    return 0; 

    }
    }
      

  2.   

    返回值是个int64的,你自己转换成16进制的就ok了BTW:这样的问题以前有很多,以后发的时候先收收再提问。
      

  3.   

    sun926(初学者)得到本机的吧?
      

  4.   

    楼主看看这篇文章:http://www.itonline.gd.cn/ittech/printpage.asp?id=539
      

  5.   

    通过API: //调用WIN API
    [DllImport("Iphlpapi.dll")]
    public static extern int SendARP (Int32 dest,Int32 host,ref Int64 mac,ref Int32 length);//dest为目标机器的IP;Host为本机器的IP [DllImport("Ws2_32.dll")]
    public static extern Int32 inet_addr (string ip);
      

  6.   

    up
    1using System.Management;
    2api