运行cmd,输入 ipconfig /all命令,就可以查看

解决方案 »

  1.   

    #include < windows.h >
    #include < wincon.h >
    #include < stdlib.h >
    #include < stdio.h >
    #include < time.h >
    #include <nb30.h>
    #pragma comment(lib,"netapi32.lib")
     // 因为是通过NetAPI来获取网卡信息,所以需要包含其题头文件nb30.h #include < nb30.h > 
    typedef struct _ASTAT_
    {
        ADAPTER_STATUS adapt;
        NAME_BUFFER    NameBuff [30];
    }ASTAT, * PASTAT;ASTAT Adapter;     // 定义一个存放返回网卡信息的变量 
     // 输入参数:lana_num为网卡编号,一般地,从0开始,但在Windows 2000中并不一定是连续分配的 void getmac_one (int lana_num)
    {
        NCB ncb;
        UCHAR uRetCode;    memset( &ncb, 0, sizeof(ncb) );
        ncb.ncb_command = NCBRESET;
        ncb.ncb_lana_num = lana_num;   
        // 指定网卡号 // 首先对选定的网卡发送一个NCBRESET命令,以便进行初始化 
        uRetCode = Netbios( &ncb );
        printf( "The NCBRESET return code is:    0x%x \n", uRetCode );    memset( &ncb, 0, sizeof(ncb) );
        ncb.ncb_command = NCBASTAT;
        ncb.ncb_lana_num = lana_num;     // 指定网卡号    strcpy( (char *)ncb.ncb_callname,     "*               " );
        ncb.ncb_buffer = (unsigned char *) &Adapter;
     // 指定返回的信息存放的变量 
        ncb.ncb_length = sizeof(Adapter); // 接着,可以发送NCBASTAT命令以获取网卡的信息 
        uRetCode = Netbios( &ncb );
        printf( "The NCBASTAT     return code is: 0x%x \n", uRetCode );
        if ( uRetCode == 0 )
        { // 把网卡MAC地址格式化成常用的16进制形式,如0010-A4E4-5802 
    printf( "The Ethernet Number[%d] is: %02X%02X-%02X%02X-%02X%02X\n",
         lana_num,
      Adapter.adapt.adapter_address[0],
      Adapter.adapt.adapter_address[1],
      Adapter.adapt.adapter_address[2],
      Adapter.adapt.adapter_address[3],
      Adapter.adapt.adapter_address[4],
      Adapter.adapt.adapter_address[5] );
        }
    }int main(int argc, char* argv[]) 
    {
        NCB ncb;
        UCHAR uRetCode;
        LANA_ENUM lana_enum;    memset( &ncb, 0, sizeof(ncb) );
        ncb.ncb_command = NCBENUM;    ncb.ncb_buffer = (unsigned char *) &lana_enum;
        ncb.ncb_length = sizeof(lana_enum); // 向网卡发送NCBENUM命令,以获取当前机器的网卡信息,如有多少个网卡、每张网卡的编号等 
    uRetCode = Netbios( &ncb );
    printf( "The NCBENUM return code is: 0x%x \n", uRetCode );
     if ( uRetCode == 0 )
     {
     printf( "Ethernet Count is : %d\n\n", lana_enum.length); // 对每一张网卡,以其网卡编号为输入编号,获取其MAC地址 
    for ( int i=0; i< lana_enum.length; ++i)
    getmac_one( lana_enum.lana[i]);
     }
    int aa=0;
    scanf("%d",aa);
    return 0;
    }
      

  2.   

    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; 

    }
    }
      

  3.   

    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; 

    }
    }程序得出来的是一个64位的数,转化成16进制 就一样了.
      

  4.   

    可以用arp -a来查看,在c#中你可以调用类库来实现
      

  5.   

    namespace 获得MAC地址
    {
    /// <summary>
    /// Form1 的摘要说明。
    /// </summary>
    public class Form1 : System.Windows.Forms.Form
    {
    [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);//去掉IP中的点
    /// </summary>
    [STAThread]
    static void Main() 
    {
    Application.Run(new Form1());
    } private void Form1_Load(object sender, System.EventArgs e)
    {
    this.textBox1.Text="192.168.0.1";
    this.textBox2.Text="";
    } private void button1_Click(object sender, System.EventArgs e)
    {


    string s;
    this.button1.Enabled=false;

    IPHostEntry myin=Dns.GetHostByName(System.Environment.MachineName);
    MessageBox.Show(myin.HostName.ToString());
    MessageBox.Show(myin.AddressList[0].ToString());
    Int32 mysource=inet_addr(myin.AddressList[0].ToString());
    Int32 iptest=inet_addr(myin.AddressList[0].ToString());                            
    Int64 macinfo=new Int64();
    Int32 len=6;
    SendARP(iptest,mysource,ref macinfo,ref len);  s=System.Convert.ToString(macinfo,16);
    MessageBox.Show(s.ToString());
    return;
    string[] b=new string[6];
    string box;
    int l=12;
    for(int i=0;i<6;i++)
    {
                  b[i]=s.Substring(l-2,2);
    l-=2; }
              box=b[0];
    for(int j=1;j<6;j++)
    {
                   box=box+"-"+b[j];
    } this.textBox2.Text=box;



    }
      

  6.   

    楼上的,因为我对C#一窍不通,今天第一次用这个,所以我也不知道各位写的对不对,所以我希望那个朋友最好能写详细一下,(有详细注释的),谢谢大家了,请大家帮帮忙,或者是写一个函数,这个函数可以读到我本机的MAC,然后我在C#程序中调用您写的函数,但是你得告诉我怎么调用,谢谢了,请大家帮帮忙,分数可以再加!!!!!!!!