Ejemplo n.º 1
0
        /// <summary>
        /// 获取国内IP地址
        /// </summary>
        /// <returns></returns>
        public static string GetRandomChinaIP()
        {
            string ip      = AppRequest.GetRandomIP("182.128.0.0", "182.143.255.255");
            string address = AppRequest.GetAdrByChinaIp(ip);

            if (!address.Contains("中国"))
            {
                return(GetRandomChinaIP());
            }
            return(ip);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 检测一段时间内,IP的请求次数是否可以继续请求
        /// 和使用
        /// </summary>
        /// <param name="ip"></param>
        /// <returns></returns>
        public static bool CheckIsAble()
        {
            string ip = AppRequest.GetIP();

            lock (lockObj)
            {
                var item = dataList.Find(p => p.IP == ip);
                if (item == null)
                {
                    item    = new IPCacheInfo();
                    item.IP = ip;
                    item.ReqTime.Add(DateTime.Now);
                    dataList.Add(item);
                    return(true);
                }
                else
                {
                    if (item.ReqTime.Count > maxTimes)
                    {
                        item.ReqTime.RemoveAt(0);
                    }

                    var nowTime = DateTime.Now;
                    if (isFailAddIn)
                    {
                        #region 请求被拒绝也需要加入当次请求
                        item.ReqTime.Add(nowTime);
                        if (item.ReqTime.Count >= maxTimes)
                        {
                            if (item.ReqTime[0].AddSeconds(partSecond) > nowTime)
                            {
                                return(false);
                            }
                            else
                            {
                                return(true);
                            }
                        }
                        else
                        {
                            return(true);
                        }
                        #endregion
                    }
                    else
                    {
                        #region 请求被拒绝就不需要加入当次请求了
                        if (item.ReqTime.Count >= maxTimes)
                        {
                            if (item.ReqTime[0].AddSeconds(partSecond) > nowTime)
                            {
                                return(false);
                            }
                            else
                            {
                                item.ReqTime.Add(nowTime);
                                return(true);
                            }
                        }
                        else
                        {
                            item.ReqTime.Add(nowTime);
                            return(true);
                        }
                        #endregion
                    }
                }
            }
        }