• 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, 0ref 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, 0ref   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 + 217);
                
    if (dirResults.IndexOf("本地连接"!= -1)
                { dirResults 
    = "没有得到mac"; }
                
    return dirResults;
            }
        }

  • 相关阅读:
    Java内存管理以及各个内存区域详解
    python数据的存储和持久化操作
    Redis的安装及配置
    POI使用详解
    遍历Map的几种方法
    Quartz的cronTrigger表达式
    Java对XML文档的增删改查
    Solr系列二:Solr与mmseg4j的整合
    cms STW 的两个阶段
    GROUP BY 和 ORDER BY 同时使用问题
  • 原文地址:https://www.cnblogs.com/scottckt/p/1165628.html
Copyright © 2020-2023  润新知