获取mac地址的方法

来源:互联网 发布:域名映射内网服务器 编辑:程序博客网 时间:2024/05/21 10:46

概念介绍

 

MAC(Media Access Control)地址,或称为 MAC位址、硬件位址,用来定义网络设备的位置。在OSI模型中,第三层网络层负责 IP地址,第二层资料链结层则负责 MAC位址。因此一个主机会有一个IP地址,而每个网络位置会有一个专属于它的MAC位址。

  

MAC(Medium/MediaAccess Control, 介质访问控制)MAC地址是烧录在NetworkInterfaceCard(网卡,NIC)里的.MAC地址,也叫硬件地址,是由48比特长(6字节),16进制的数字组成.0-23位叫做组织唯一标志符(organizationally unique,是识别LAN(局域网)节点的标识.24-47位是由厂家自己分配。其中第40位是组播地址标志位。网卡的物理地址通常是由网卡生产厂家烧入网卡的EPROM(一种闪存芯片,通常可以通过程序擦写),它存储的是传输数据时真正赖以标识发出数据的电脑和接收数据的主机的地址。

 

形象的说,MAC地址就如同我们身份证上的身份证号码,具有全球唯一性。

 

如何获取本机的MAC?

在Windows 2000/XP/Vista/7中

  单击开始,找到命令提示符,进入后输入ipconfig /all即可。(如图)

Physical Address. . . . . . . . . : 00-23-5A-15-99-42

  另外,还可以通过查看本地连接获取MAC地址:依次单击“本地连接”→“支持”→“详细信息”。 即可看到MAC地址(实际地址)。

 

 

 

 

 

 

 

 

 

修改网卡MAC地址的方法

 

 

  其实更改网卡MAC地址的功能不论98、2000还是XP,都已经提供了,只是平时大家都没有注意到而已。下面我就说说怎么更改。很简单哦。。。

win2000修改方法

  好了,现在先来看看WIN2000。在桌面上网上邻居图标上点右键,选"属性",在出来的"网络和拨号连接"窗口中一般有两个图标,一个是"新建连接"图标,一个是"我的连接"图标。如果你的机器上有两个网卡的话,那就有三个图标了。如果你只有一个网卡,那就在"我的连接"图标上点右键,选"属性",会出来一个"我的连接 属性"的窗口。在图口上部有一个"连接时使用:"的标识,下面就是你机器上的网卡型号了。在下面有一个"配置"按钮,点击该按钮后就进入了网卡的属性对话框了,这个对话框中有五个属性页,点击第二项"高级"页,在"属性"标识下有两项:一个是"Link Speed/Duplex Mode",这是设置网卡工作速率的,我们需要改的是下面一个"Network Address",点击该项,在对话框右边的"值"标识下有两个单选项,默认得是"不存在" ,我们只要选中上面一个单选项,然后在右边的框中输入你想改的网卡MAC地址,点"确定",等待一会儿,网卡地址就改好了,你甚至不用停用网卡!

  另外,你也可以在"设置管理器"中,打开网卡的属性页来修改,效果一样。WINXP的修改方法跟WIN2000一样。

 

MAC地址的应用

  平日身份证的作用并不是很大,但是到了有的关键时刻,身份证就是用来证明你的身份的。比如你要去银行提取现金,这时就要用到身份证。那么MAC地址与IP地址绑定就如同我们在日常生活中的本人携带自己的身份证去做重要事情一样的道理。有的时候,我们为了防止IP地址被盗用,就通过简单的交换机端口绑定(端口的MAC表使用静态表项),可以在每个交换机端口只连接一台主机的情况下防止修改MAC地址的盗用,如果是三层设备还可以提供:交换机端口/IP/MAC 三者的绑定,防止修改MAC的IP盗用。一般绑定MAC地址都是在交换机和路由器上配置的,是网管人员才能接触到的,对于一般电脑用户来说只要了解了绑定的作用就行了。比如你在校园网中把自己的笔记本电脑换到另外一个宿舍就无法上网了,这个就是因为MAC地址与IP地址(端口)绑定引起的。

 

 C#获取方法

 

using System;
using System.Collections.Generic;
using System.Text;
using System.Net;
using System.Net.Sockets;
using System.Management;

        //取Mac地址
        public static string GetMac()
        {
            string s = "", mac = "";

            string hostInfo = Dns.GetHostName();

            System.Net.IPAddress[] addressList = Dns.GetHostByName(Dns.GetHostName()).AddressList;

            for (int i = 0; i < addressList.Length; i++)
            {

                s += addressList[i].ToString();
            }
            ManagementClass mc;

            mc = new ManagementClass("Win32_NetworkAdapterConfiguration"); ManagementObjectCollection moc = mc.GetInstances();

            foreach (ManagementObject mo in moc)
            {

                if (mo["IPEnabled"].ToString() == "True")

                    mac = mo["MacAddress"].ToString();

            }

            return mac.Replace(":", "");

 

java获取方法

import java.net.NetworkInterface;
import java.net.URL;
import java.net.URLEncoder;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Enumeration;

    public static String getMac() {
     String rtnMac = "";
     try  {
       Enumeration<NetworkInterface> el = NetworkInterface.getNetworkInterfaces();
        while  (el.hasMoreElements()) {
          byte [] mac = el.nextElement().getHardwareAddress();
          if  (mac ==  null )
            continue ;
          String tmpMac = "";
          for  ( byte  b : mac) {
           tmpMac +=  hexByte(b).toUpperCase();
          }
          rtnMac = tmpMac;
       }
     }  catch  (Exception e) {
       e.printStackTrace();
     }
  return rtnMac;
   }
   static  String hexByte( byte  b) {
     String s =  "000000"  + Integer.toHexString(b);
      return  s.substring(s.length() -  2 );
   }

原创粉丝点击