如何获取计算机的mac地址的代码

如何获取计算机的mac地址的代码,第1张

获取客户端IP及MAC地址,下边分为了C#后台获取的方法和前台Javascript(调用ActiveX)获取的方法

C#代码获取:

using System;

using SystemCollectionsGeneric;

using SystemLinq;

using SystemWeb;

using SystemWebUI;

using SystemWebUIWebControls;

using SystemRuntimeInteropServices;

namespace MyTest

{

    public partial class mac : SystemWebUIPage

    {

        [DllImport("Iphlpapidll")]

        private static extern int SendARP(Int32 dest, Int32 host, ref Int64 mac, ref Int32 length);

        [DllImport("Ws2_32dll")]

        private static extern Int32 inet_addr(string ip);

 

        protected void Page_Load(object sender, EventArgs e)

        {

            GetMac();  

        }

        //获取客户端IP

        private string GetClientIP()

        {

            string result = >

例如A主机的IP地址为19216801,它现在需要与IP为19216808的主机(主机B)进行通讯,那么将进行以下动作:

A主机查询自己的ARP缓存列表,

如果发现具有对应于目的IP地址19216808的MAC地址项,则直接使用此MAC地址项构造并发送以太网数据包,如果没有发现对应的MAC地址项则继续下一步;

A主机发出ARP解析请求广播,目的MAC地址是FF:FF:FF:FF:FF:FF,请求IP为19216808的主机回复MAC地址;

B主机收到ARP解析请求广播后,回复给A主机一个ARP应答数据包,其中包含自己的IP地址和MAC地址;

A接收到B主机的ARP回复后,将B主机的MAC地址放入自己的ARP缓存列表,然后使用B主机的MAC地址作为目的MAC地址,B主机的IP地址(19216808)作为目的IP地址,

构造并发送以太网数据包;

如果A主机还要发送数据包给19216808,

由于在ARP缓存列表中已经具有IP地址19216808的MAC地址,所以A主机直接使用此MAC地址发送数据包,而不再发送ARP解析请求广播;当此缓存地址项超过两分钟没有活动(没有使用)后,此ARP缓存将超时被删除。

默认情况下ARP缓存的超时时限是两分钟,你可以在注册表中进行修改。可以修改的键值有两个,都位于

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

修改的键值:

键值1:ArpCacheLife,类型为Dword,单位为秒,默认值为120

键值2:ArpCacheMinReferencedLife,类型为Dword,单位为秒,默认值为600

注意:这些键值默认是不存在的,如果你想修改,必须自行创建;修改后重启计算机后生效。

如果ArpCacheLife的值比ArpCacheMinReferencedLife的值大,那么ARP缓存的超时时间设置为ArpCacheLife的值;如果ArpCacheLife的值不存在或者比ArpCacheMinReferencedLife的值小,那么对于未使用的ARP缓存,超时时间设置为120秒;对于正在使用的ARP缓存,超时时间则设置为ArpCacheMinReferencedLife的值。下图是我们的试验网络结构,ISA

Server作为一个边缘防火墙,内部局域网(19216800/24)通过ISA

Server接入Internet。在这个试验中,我将在ISA

Server上绑定内部客户True的IP地址19216808和MAC地址,这样,当True不在线时,另外一个内部客户Fake就算修改自己的IP地址为True的IP地址19216808,也不能通过ISA

Server来上网。

各计算机的TCP/IP设置如下,本次试验不涉及DNS解析,各服务器的DNS服务器设置为空,在试验之前已经确认了网络连接工作正常:

ISA

2004

Firewall:LAN

Interface:

IP:19216801/24

DG:None

MAC:00:03:47:F4:FC:E7

 

True(将离线):IP:19216808/24

DG:19216801

MAC:00:0D:60:C3:05:34

 

Fake(将修改IP地址为19216808):IP:19216808/24

DG:19216801

MAC:00:06:D0:06:05:47

 

 

首先,我在ISA

Server上使用ARP

-S来绑定True的IP地址和MAC地址,运行命令:

ARP

-s

19216808

00-0D-60-C3-05-34

然后执行ARP

-a来查看ARP缓存列表,结果如下图所示。你可以看到在ARP缓存列表中IP地址19216808的类型为static,这表明它是静态项。此时,我们在ISA

Server上的绑定就成功了。

获取客户端IP及MAC地址,下边分为了C#后台获取的方法和前台Javascript(调用ActiveX)获取的方法

C#代码获取:

using System;

using SystemCollectionsGeneric;

using SystemLinq;

using SystemWeb;

using SystemWebUI;

using SystemWebUIWebControls;

using SystemRuntimeInteropServices;

namespace MyTest

{

    public partial class mac : SystemWebUIPage

    {

        [DllImport("Iphlpapidll")]

        private static extern int SendARP(Int32 dest, Int32 host, ref Int64 mac, ref Int32 length);

        [DllImport("Ws2_32dll")]

        private static extern Int32 inet_addr(string ip);

        protected void Page_Load(object sender, EventArgs e)

        {

            GetMac();  

        }

        //获取客户端IP

        private string GetClientIP()

        {

            string result = >}

Javascript获取:

<HTML><HEAD><TITLE>WMI Scripting HTMLTITLE>

<META >

查看电脑的IP地址及mac地址方法如下(以windows XP 为例):

1、按下键盘上的win+R

2、在d出来运行中输入“cmd”后按下回车

3、在d出的命令符窗口,输入“ipconfig/all”,然后进行回车

4、在返回信息中,就能见到电脑的mac地址(Physical Address地址)及IP地址,如图:

以上就是关于如何获取计算机的mac地址的代码全部的内容,包括:如何获取计算机的mac地址的代码、WEB服务器为什么取不到用户的MAC地址、如何查看电脑的ip地址和MAC地址等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9761671.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存