首先介绍一下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()));
 posted on 2007-11-19 13:57  思绪随风  阅读(285)  评论(0编辑  收藏  举报