首页 > Windows开发 > 详细

C#实用帮助类或方法汇总

时间:2015-11-06 16:08:28      阅读:390      评论:0      收藏:0      [点我收藏+]

1.获取真实IP地址:(如果本地localhost测试获取的是本地回环地址)

技术分享
        /// <summary>
        /// 获取IP地址
        /// </summary>
        /// <returns></returns>
        public static string GetIPAddress()
        {
            string result = String.Empty;

            result = System.Web.HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];

            // 如果使用代理,获取真实IP 
            if (result != null && result.IndexOf(".") == -1)    //没有“.”肯定是非IPv4格式 
                result = null;
            else if (result != null)
            {
                if (result.IndexOf(",") != -1)
                {
                    //有“,”,估计多个代理。取第一个不是内网的IP。 
                    result = result.Replace(" ", "").Replace("", "");
                    string[] temparyip = result.Split(",;".ToCharArray());
                    for (int i = 0; i < temparyip.Length; i++)
                    {
                        if (IsIPAddress(temparyip[i])
                            && temparyip[i].Substring(0, 3) != "10."
                            && temparyip[i].Substring(0, 7) != "192.168"
                            && temparyip[i].Substring(0, 7) != "172.16.")
                        {
                            return temparyip[i];    //找到不是内网的地址 
                        }
                    }
                }
                else if (IsIPAddress(result)) //代理即是IP格式 
                    return result;
                else
                    result = null;    //代理中的内容 非IP,取IP 
            }
            if (null == result || result == String.Empty)
                result = System.Web.HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];

            if (result == null || result == String.Empty)
                result = System.Web.HttpContext.Current.Request.UserHostAddress;

            return result;
        }
View Code

2.判断是否是IP地址格式:

技术分享
 /// <summary>
        /// 判断是否是IP地址格式 0.0.0.0
        /// </summary>
        /// <param name="str1">待判断的IP地址</param>
        /// <returns>true or false</returns>
        private static bool IsIPAddress(string str1)
        {
            if (str1 == null || str1 == string.Empty || str1.Length < 7 || str1.Length > 15) return false;

            string regformat = @"^\d{1,3}[\.]\d{1,3}[\.]\d{1,3}[\.]\d{1,3}$";

            Regex regex = new Regex(regformat, RegexOptions.IgnoreCase);
            return regex.IsMatch(str1);
        }
View Code

3.获取IP所在省市名称:如,安徽合肥市

技术分享
 /// <summary>
        /// 获取IP所在省市
        /// </summary>
        /// <param name="Ip">IP地址</param>
        /// <returns></returns>
        public static string GetProviceCityByIP(string ip)
        {
            WebRequest request = WebRequest.Create("http://www.ip138.com/ips138.asp?ip=" + ip);
            WebResponse response = request.GetResponse();
            StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding("gb2312"));
            string read = reader.ReadToEnd();
            if (string.IsNullOrEmpty(read))
            {
                return "默认城市";
            }
            Regex regex = new Regex("<td align=\"center\"><ul class=\"ul1\"><li>本站主数据:(?<title>.*?)</li>");
            if (regex.IsMatch(read))
            {
                read = regex.Match(read).Groups["title"].Value;

            }
            string[] result = read.Split( );
            if (result.Length > 0)
            {
                return result[0];
            }
            return string.Empty;
        }
View Code

4.写日志到txt文件:

技术分享
 //写入日志
        public static void WriteLog(string text)
        {
            StreamWriter sw = new StreamWriter(HttpContext.Current.Server.MapPath(".") + "\\log.txt", true); //服务器根目录下log写入日志
            sw.WriteLine(text);
            sw.Close();
        }
View Code

 

C#实用帮助类或方法汇总

原文:http://www.cnblogs.com/zxx193/p/4942705.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!