• C#获取客户端Ip工具类


                string pcname = Dns.GetHostName();
                string ip = Dns.GetHostAddresses(pcname).First().ToString();
    using Com.AppCode.Extend;
    using Com.AppCode.Helper;
    using System.Collections.Generic;
    using System.Net;
    using System.Net.NetworkInformation;
    using System.Net.Sockets;
    using System.Text;
    using System.Web;
    
    namespace Com.AppCode.Net
    {
        /// <summary>
        /// 网络操作
        /// </summary>
        public class NetHelper
        {
            #region Ip(获取Ip)
            /// <summary>
            /// 获取Ip
            /// </summary>
            public static string Ip
            {
                get
                {
                    var result = string.Empty;
                    if (HttpContext.Current != null)
                        result = GetWebClientIp();
                    if (result.IsEmpty())
                        result = GetLanIp();
                    return result;
                }
            }
    
            /// <summary>
            /// 获取Web客户端的Ip
            /// </summary>
            private static string GetWebClientIp()
            {
                var ip = GetWebRemoteIp();
                foreach (var hostAddress in Dns.GetHostAddresses(ip))
                {
                    if (hostAddress.AddressFamily == AddressFamily.InterNetwork)
                        return hostAddress.ToString();
                }
                return string.Empty;
            }
    
            /// <summary>
            /// 获取Web远程Ip
            /// </summary>
            private static string GetWebRemoteIp()
            {
                return HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"] ?? HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
            }
    
            /// <summary>
            /// 获取局域网IP
            /// </summary>
            private static string GetLanIp()
            {
                foreach (var hostAddress in Dns.GetHostAddresses(Dns.GetHostName()))
                {
                    if (hostAddress.AddressFamily == AddressFamily.InterNetwork)
                        return hostAddress.ToString();
                }
                return string.Empty;
            }
    
            #endregion
    
            #region Host(获取主机名)
    
            /// <summary>
            /// 获取主机名
            /// </summary>
            public static string Host
            {
                get
                {
                    return HttpContext.Current == null ? Dns.GetHostName() : GetWebClientHostName();
                }
            }
    
            /// <summary>
            /// 获取Web客户端主机名
            /// </summary>
            private static string GetWebClientHostName()
            {
                if (!HttpContext.Current.Request.IsLocal)
                    return string.Empty;
                var ip = GetWebRemoteIp();
                var result = Dns.GetHostEntry(IPAddress.Parse(ip)).HostName;
                if (result == "localhost.localdomain")
                    result = Dns.GetHostName();
                return result;
            }
    
            #endregion
    
            #region 获取mac地址
            /// <summary>
            /// 返回描述本地计算机上的网络接口的对象(网络接口也称为网络适配器)。
            /// </summary>
            /// <returns></returns>
            public static NetworkInterface[] NetCardInfo()
            {
                return NetworkInterface.GetAllNetworkInterfaces();
            }
            ///<summary>
            /// 通过NetworkInterface读取网卡Mac
            ///</summary>
            ///<returns></returns>
            public static List<string> GetMacByNetworkInterface()
            {
                List<string> macs = new List<string>();
                NetworkInterface[] interfaces = NetworkInterface.GetAllNetworkInterfaces();
                foreach (NetworkInterface ni in interfaces)
                {
                    macs.Add(ni.GetPhysicalAddress().ToString());
                }
                return macs;
            }
            #endregion
    
            #region Ip城市(获取Ip城市)
            /// <summary>
            /// 获取IP地址信息
            /// </summary>
            /// <param name="ip"></param>
            /// <returns></returns>
            public static string GetLocation(string ip)
            {
                string res = "";
                try
                {
                    string apiUrl = "http://apis.juhe.cn/ip/ip2addr?ip=" + ip + "&dtype=json&key=b39857e36bee7a305d55cdb113a9d725";
                    res = HttpHelper.GetHttpWebResponseReturnString(apiUrl, null).ToString();
                    var resjson = JsonHelper.ScriptDeserialize<objex>(res);
                    res = resjson.result.area + " " + resjson.result.location;
                }
                catch
                {
                    res = "";
                }
                if (!string.IsNullOrEmpty(res))
                {
                    return res;
                }
                try
                {
                    string url = "https://sp0.baidu.com/8aQDcjqpAAV3otqbppnN2DJv/api.php?query=" + ip + "&resource_id=6006&ie=utf8&oe=gbk&format=json";
                    res = HttpHelper.GetHttpWebResponseReturnString(url, null).ToString();
                    var resjson = JsonHelper.ScriptDeserialize<obj>(res);
                    res = resjson.data[0].location;
                }
                catch
                {
                    res = "";
                }
                return res;
            }
            /// <summary>
            /// 百度接口
            /// </summary>
            public class obj
            {
                public List<dataone> data { get; set; }
            }
            public class dataone
            {
                public string location { get; set; }
            }
            /// <summary>
            /// 聚合数据
            /// </summary>
            public class objex
            {
                public string resultcode { get; set; }
                public dataoneex result { get; set; }
                public string reason { get; set; }
                public string error_code { get; set; }
            }
            public class dataoneex
            {
                public string area { get; set; }
                public string location { get; set; }
            }
            #endregion
    
            #region Browser(获取浏览器信息)
            /// <summary>
            /// 获取浏览器信息
            /// </summary>
            public static string Browser
            {
                get
                {
                    if (HttpContext.Current == null)
                        return string.Empty;
                    var browser = HttpContext.Current.Request.Browser;
                    return string.Format("{0} {1}", browser.Browser, browser.Version);
                }
            }
            #endregion
        }
    }
  • 相关阅读:
    2019.8.6原型链与继承
    2019.8.2闭包,作用域
    2019.8.1正则二
    2019.7.31正则
    2019.7.29二维数组
    2019.7.28关于数组和循环的八道题
    2019.7.27数组api
    DOM
    JavaScript数组5种去重方法
    JavaScript面向对象
  • 原文地址:https://www.cnblogs.com/hofmann/p/11766167.html
Copyright © 2020-2023  润新知