zoukankan      html  css  js  c++  java
  • ASP.NET获取IP和MAC代码(C#)

    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Net;
    using System.Text.RegularExpressions;
    using System.Diagnostics;
    using System.Runtime.InteropServices;
    using System.Management;
    using System.Management.Instrumentation;
    using System.Runtime.Remoting.Contexts;
    using System.Web;

    namespace ComLib
    {
        public class GetIP_MAC
        {
            [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);

            public static string GetIP()
            {
                string ip = "";
                if (System.Web.HttpContext.Current.Request.ServerVariables["HTTP_VIA"] != null) // 服务器, using proxy
                {
                    //得到真实的客户端地址
                    ip = System.Web.HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"].ToString(); // Return real client IP.
                }
                else//如果没有使用代理服务器或者得不到客户端的ip not using proxy or can't get the Client IP
                {

                    //得到服务端的地址
                    ip = System.Web.HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"].ToString(); //While it can't get the Client IP, it will return proxy IP.
                }
                return ip;
            }
            /// <summary>
            /// 获取MAC地址
            /// </summary>
            /// <returns></returns>
           public static string GetMAC()
            {
                try
                {
                    string userip = System.Web.HttpContext.Current.Request.UserHostAddress;
                    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");
                    string mac_dest = "";
                    //if (mac_src == "0")
                    //{
                    //    if (userip == "127.0.0.1")
                    //        mac_dest = "正在访问Localhost!";
                    //    else
                    //        mac_dest = "欢迎来自IP为" + userip + "的朋友!" + "<br>";
                    //    return mac_dest;
                    //}

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

                    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>");
                    return mac_dest;

                }
                catch
                {
                    return "找不到主机信息";
                }
            }
        }
    }

  • 相关阅读:
    HTML 5 视频/音频
    vue 未完待续
    asp.net中使用log4net
    图片预加载:jquery 图片预加载功能,可以实现先模糊在清晰的显示
    IIS配置PHP环境
    学习ASP.Net的过滤器
    最好用的jQuery插件,240多个,绝对的JQUERY插件库
    Windows7&IIS7.5部署Discuz全攻略
    AjaxPro使用
    ASP.NET XML读取、增加、修改和删除操作
  • 原文地址:https://www.cnblogs.com/hakuci/p/1625963.html
Copyright © 2011-2022 走看看