获取客户端的Mac地址

首先介绍一下Mac地址:
    介质访问控制(Media Access Control ,简称MAC)地址,是厂商生产的网卡的地址,对于每一台设备是惟一的,该地址定义了计算机间的网络连接,记录在网络接口卡(Network Interface Card ,NIC)上的硬件电路上。介质访问控制地址是由12位16进制数(O~F)共48位表示,前24位标识网络接口卡的厂商,不同厂商生产的标识不同,后24位是由厂商指定的网络接口卡序列号。

    我们可以用MAC的唯一性在程序里做一些功能,具体的功能这里就详细说了,下面就是具体的实现。
using  System;
using  System.Runtime.InteropServices;

namespace  Underlet.Components
{
    
public class GetClientMac 
    
{
        [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);

        
public GetClientMac()
        
{
            
        }


        
/**//// <summary>
        
/// 获取客户端的MAC地址
        
/// </summary>
        
/// <param name="IP">客户端IP</param>
        
/// <returns>客户端的MAC地址</returns>

        public string  GetMac(string   IP)
        
{
            
string mac_dest="";
            
try
            
{
                
                
string strClientIP = IP;
                Int32 ldest 
= inet_addr(strClientIP); //目的地的ip 
                Int64 macinfo = new Int64(); 
                Int32 len 
= 6
                
int res = SendARP(ldest,0ref macinfo, ref len);
                
string mac_src=macinfo.ToString("X");
                
if(mac_src == "0")
                
{
                    
return "正在访问Localhost!";
                }


                
while(mac_src.Length<12)
                
{
                    mac_src 
= mac_src.Insert(0,"0");
                }


                
for(int i=0;i<11;i++)
                
{
                    
if (0 == (i % 2))
                    
{
                        
if ( i == 10 )
                        
{
                            mac_dest 
= mac_dest.Insert(0,mac_src.Substring(i,2));
                        }

                        
else
                        
{
                            mac_dest 
="-" + mac_dest.Insert(0,mac_src.Substring(i,2));
                        }

                    }
 
                }
    
            }

            
catch
            

                
            }

            
            
return  mac_dest;
        }
 
    }

}


这样调用就可以了
GetClientMac mac  = new GetClientMac();
   Response.Write( mac.GetMac(Request.UserHostAddress.ToString().Trim()));

转载于:https://www.cnblogs.com/yanfei331/archive/2007/11/19/964124.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值