获取客户端IP、mac、主机名称

public class WebHelper
    {
        [DllImport("Iphlpapi.dll")]
        private static extern int SendARP(int dest, int host, ref long mac, ref int length);
        [DllImport("Ws2_32.dll")]
        private static extern int inet_addr(string ip);

        /// <summary>
        /// 获取客户端IP
        /// </summary>
        /// <returns></returns>
        public static string GetClientIP()
        {
            string result = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
            if (string.IsNullOrEmpty(result))
            {
                result = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
            }
            if (string.IsNullOrEmpty(result))
            {
                result = HttpContext.Current.Request.UserHostAddress;
            }
            return result;
        }
        /// <summary>
        /// 获取客户端MAC地址
        /// </summary>
        /// <returns></returns>
        public static string GetClientMACAddress()
        {

            string mac_dest = string.Empty;

            try
            {
                string strClientIP = HttpContext.Current.Request.UserHostAddress.Trim();
                int ldest = inet_addr(strClientIP); //目的地的ip 
                inet_addr("");//本地服务器的ip 
                long macinfo = new long();
                int len = 6;
                SendARP(ldest, 0, ref macinfo, ref len);
                string mac_src = macinfo.ToString("X");

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

                    for (int i = 0; i < 11; i++)
                    {
                        if (0 == (i % 2))
                        {
                            mac_dest = i == 10
                                ? mac_dest.Insert(0, mac_src.Substring(i, 2))
                                : "-" + mac_dest.Insert(0, mac_src.Substring(i, 2));
                        }
                    }
                }
            }
            catch
            {
                //igone
            }
            return mac_dest;
        }

        public static string GetClientHostName()
        {
            string result = HttpContext.Current.Request.ServerVariables["SERVER_NAME"];
            if (string.IsNullOrEmpty(result))
            {
                result=HttpContext.Current.Request.UserHostName;
            }
            return result;
        }
        /// <summary>
        /// 判断是否为AJAX请求
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public static bool IsXHR(HttpRequestBase request)
        {
            bool ret = false;
            if (request != null)
            {

                if (request.Headers["X-Requested-With"] != null && request.Headers["X-Requested-With"].Trim().Length > 0)
                {
                    ret = true;
                }
            }
            return ret;
        }

        
    }
原文地址:https://www.cnblogs.com/caolingyi/p/8548138.html