Asp.net 得到服務器及局域網內客戶端MAC

想找客戶端唯一標識,可是沒找到結果,不過找到了其它一些代碼。

1、得到服務器MAC地址
///   <summary>
///  得到服務器MAC地址
///   </summary>
void  GetClientMacMethodTwo()
{
    ManagementClass mc 
=   new  ManagementClass( " Win32_NetworkAdapterConfiguration " );
    ManagementObjectCollection moc 
=  mc.GetInstances();
    
foreach  (ManagementObject mo  in  moc)
    {
        
if  (( bool )mo[ " IPEnabled " ==   true )
            Response.Write(
" MAC   address\t\r "   +  mo[ " MacAddress " ].ToString()  +   "" );
    }
    ManagementObject disk 
=   new  ManagementObject( " win32_logicaldisk.deviceid=\ " c:\ "" );
    disk.Get();
    Response.Write(
" Volume   Serial   Number:    "   +  disk.GetPropertyValue( " VolumeSerialNumber " ).ToString());
}


2、得到局域網內MAC方法1
[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);

///   <summary>
///  得到局域網內MAC
///   </summary>
void  GetClientMacMehtod()
{
    
//  在此处放置用户代码以初始化页面
     try
    {
        
string  userip  =  Request.UserHostAddress;
        
string  strClientIP  =  Request.UserHostAddress.ToString().Trim();
        Int32 ldest 
=  inet_addr(strClientIP);  // 目的地的ip
        Int32 lhost  =  inet_addr( "" );    // 本地服务器的ip
        Int64 macinfo  =   new  Int64();
        Int32 len 
=   6 ;
        
int  res  =  SendARP(ldest,  0 ref  macinfo,  ref  len);
        
string  mac_src  =  macinfo.ToString( " X " );
        
if  (mac_src  ==   " 0 " )
        {
            
if  (userip  ==   " 127.0.0.1 " )
                Response.Write(
" 正在访问Localhost! " );
            
else
                Response.Write(
" 欢迎来自IP为 "   +  userip  +   " 的朋友! "   +   " <br> " );
            
return ;
        }
        
while  (mac_src.Length  <   12 )
        {
            mac_src 
=  mac_src.Insert( 0 " 0 " );
        }
        
string  mac_dest  =   "" ;
        
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 ));
                }
            }
        }
        Response.Write(
" 欢迎来自IP为 "   +  userip  +   " <br> "   +   " ,MAC地址为 "   +  mac_dest  +   " 的朋友! "
                       
+   " <br> " );
    }
    
catch  (Exception err)
    {
        Response.Write(err.Message);
    }
}

3、得到局域網內MAC方法2
     ///   <summary>
    
///  局域網內MaC
    
///   </summary>
    
///   <param name="A_strIP"></param>
    
///   <returns></returns>
     public   string  GetMACFromIP( string  A_strIP)
    {
        
string  strRet  =   " Unknown " ;

        
string  strIPPattern  =   @" ^\d+\.\d+\.\d+\.\d+$ " ;

        Regex objRex 
=   new  Regex(strIPPattern);

        
if  (objRex.IsMatch(A_strIP)  ==   true )
        {
            Int32 intDest 
=  inet_addr(A_strIP);
            Int32[] arrMAC 
=   new  Int32[ 2 ];
            Int32 intLen 
=   6 ;

            
int  intResult  =  SendARP(intDest,  0 ref    arrMAC[ 0 ],  ref    intLen);

            
if  (intResult  ==   0 )
            {
                Byte[] arrbyte 
=   new  Byte[ 8 ];
                arrbyte[
5 =  (Byte)(arrMAC[ 1 >>   8 );
                arrbyte[
4 =  (Byte)arrMAC[ 1 ];
                arrbyte[
3 =  (Byte)(arrMAC[ 0 >>   24 );
                arrbyte[
2 =  (Byte)(arrMAC[ 0 >>   16 );
                arrbyte[
1 =  (Byte)(arrMAC[ 0 >>   8 );
                arrbyte[
0 =  (Byte)arrMAC[ 0 ];

                StringBuilder strbMAC 
=   new  StringBuilder();

                
for  ( int  intIndex  =   0 ; intIndex  <   6 ; intIndex ++ )
                {
                    
if  (intIndex  >   0 ) strbMAC.Append( " - " );
                    strbMAC.Append(arrbyte[intIndex].ToString(
" X2 " ));
                }
                strRet 
=  strbMAC.ToString();
            }
        }

        
return  strRet;
    }  

4、得到局域網內MAC方法3
     ///   <summary>
    
///  局域網內MAC
    
///   </summary>
    
///   <param name="IP"></param>
    
///   <returns></returns>
     public   string  GetCustomerMac( string  IP) 
    {
        
if  (IP  ==   " 127.0.0.1 " )
        {           
            
return   "" ;
        }
        
else
        {
            
string  dirResults  =   "" ;
            ProcessStartInfo psi 
=   new  ProcessStartInfo();
            Process proc 
=   new  Process();
            psi.FileName 
=   " nbtstat " ;
            psi.RedirectStandardInput 
=   false ;
            psi.RedirectStandardOutput 
=   true ;
            psi.Arguments 
=   " -A  "   +  IP;
            psi.UseShellExecute 
=   false ;
            proc 
=  Process.Start(psi);
            dirResults 
=  proc.StandardOutput.ReadToEnd();
            proc.WaitForExit();
            dirResults 
=  dirResults.Replace( " \r " "" ).Replace( " \n " "" ).Replace( " \t " "" );
            
int  i  =  dirResults.LastIndexOf( " = " );
            dirResults 
=  dirResults.Substring(i  +   2 17 );
            
if  (dirResults.IndexOf( " 本地连接 " !=   - 1 )
            { dirResults 
=   " 没有得到mac " ; }
            
return  dirResults;
        }
    }

你可能感兴趣的:(asp.net)