zoukankan      html  css  js  c++  java
  • 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;
            }
        }

  • 相关阅读:
    Palindrome Partitioning
    triangle
    Populating Next Right Pointers in Each Node(I and II)
    分苹果(网易)
    Flatten Binary Tree to Linked List
    Construct Binary Tree from Inorder and Postorder Traversal(根据中序遍历和后序遍历构建二叉树)
    iOS系统navigationBar背景色,文字颜色处理
    登录,注销
    ios 文字上下滚动效果Demo
    经常崩溃就是数组字典引起的
  • 原文地址:https://www.cnblogs.com/scottckt/p/1165628.html
Copyright © 2011-2022 走看看