zoukankan      html  css  js  c++  java
  • asp.net获取客户端IP,Mac

        public class GetClientInfo
        {
            [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);
    
            #region 取IP
            /// <summary>
            /// 
            /// </summary>
            public static string GetClientIP()
            {
                string getip;
                if (System.Web.HttpContext.Current.Request.ServerVariables["HTTP_VIA"] != null) // using proxy
                {
                    getip = System.Web.HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"].ToString();  // Return real client IP.
                }
                else// not using proxy or can't get the Client IP
                {
                    getip = System.Web.HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"].ToString(); //While it can't get the Client IP, it will return proxy IP.
                }
                return getip;
            }
            #endregion
    
            public static string GetClientMacAddress()
            {
                try
                {
                    string strClientIP = System.Web.HttpContext.Current.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 (strClientIP == "127.0.0.1")
                            return GetServerMacAddress();
                        else
                            return null;
                    }
    
                    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));
                            }
                        }
                    }
                    return mac_dest;
                }
                catch
                {
                    return null;
                }
            }
    
            public static string GetServerMacAddress()
            {
                ManagementClass mAdapter = new ManagementClass("Win32_NetworkAdapterConfiguration");
                ManagementObjectCollection mo = mAdapter.GetInstances();
                foreach (ManagementBaseObject m in mo)
                {
                    if ((bool)m["IpEnabled"] == true)
                    {
                        return m["MacAddress"].ToString();
                    }
                }
                mo.Dispose();
                return null;
    
    
            }
    

      

  • 相关阅读:
    linux网络编程之扫盲
    当lov变化时得到lov变化的值
    动态设置OAMessageChoiceBean值
    RSA host key for HOST has changed and you have requested strict checking
    64位整数的编译错误
    CSS让内容水平居中(固定宽度)
    如何计算亮度值
    adb新参数支持Android 2.2安装到SD卡上
    NSDateFormatter formatting
    Win7系统下Safari不能打开网页的解决方法
  • 原文地址:https://www.cnblogs.com/anbylau2130/p/3158538.html
Copyright © 2011-2022 走看看