获取客户端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地址等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)