求网站在线IP列表的思路

snoopy83101 2010-01-21 04:02:34
1.想在网站下面显示正在浏览网页的IP列表,怎么做呢?

2.如果这个问题很好解决的话,麻烦说一下根据IP查询地理位置的思路,如果有相关的WEB服务的话,用WEB服务也可以。
...全文
151 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
皓月明 2010-01-22
  • 打赏
  • 举报
回复
统计用户很不好做的呀
snoopy83101 2010-01-22
  • 打赏
  • 举报
回复
如果没有登录的也想让他显示匿名用户,并显示IP。

是不是就要用楼上的办法了?
mngzilin 2010-01-21
  • 打赏
  • 举报
回复
在Global文件中的下面事件中写,类似:
http://hi.baidu.com/gflovely/blog/item/babeaa45a8772d2fcefca307.html
protected void Application_Start(Object sender, EventArgs e)
{

}


void Application_End(object sender, EventArgs e)
{
// 在应用程序关闭时运行的代码

}
seesea125 2010-01-21
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 snoopy83101 的回复:]
怎么才能将每一个登录的用户统计出来呢?用什么方法啊,网站很多页面
[/Quote]

登陆的时候用session记录每个登陆用户,就可以统计了
snoopy83101 2010-01-21
  • 打赏
  • 举报
回复
怎么才能将每一个登录的用户统计出来呢?用什么方法啊,网站很多页面
yzyz111188 2010-01-21
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 seesea125 的回复:]
namespace BLL.Common.Helper
{
    using System;
    using System.Text;

    public class IPAddress
    {
        #region 编码IP地址
        /// <summary>
        /// 编码IP地址
        /// </summary>
        /// <param name="IP">原始IP地址 </param>
        /// <returns>编码IP地址 </returns>
        public static Int64 EncodeIP(string IP)
        {
            Int64 EncodeIP;
            if (IsValidIP(IP))
            {
                string[] UserIP = IP.Split('.');
                EncodeIP = (Convert.ToInt64(UserIP[0]) * 256 * 256 * 256) + (Convert.ToInt64(UserIP[1]) * 256 * 256) + (Convert.ToInt64(UserIP[2]) * 256) + Convert.ToInt64(UserIP[3]);
            }
            else
            {
                EncodeIP = 2130706433;
            }
            return EncodeIP;
        }
        #endregion

        #region 解码IP地址
        /// <summary>
        /// 解码IP地址
        /// </summary>
        /// <param name="IP">编码IP地址 </param>
        /// <returns>原始IP地址 </returns>
        public static string DecodeIP(Int64 IP)
        {
            Int64 int_0, int_1;

            //得到第四位IP
            int_0 = IP % 256;
            int_1 = IP / 256;
            string ReturnIP = int_0.ToString();

            //得到第三位IP
            int_0 = int_1 % 256;
            int_1 = int_1 / 256;
            ReturnIP = int_0.ToString() + "." + ReturnIP;

            //得到第二位IP
            int_0 = int_1 % 256;
            int_1 = int_1 / 256;
            ReturnIP = int_0.ToString() + "." + ReturnIP;

            //得到第一位IP
            ReturnIP = (int_1 % 256).ToString() + "." + ReturnIP;

            return ReturnIP;
        }
        #endregion

public static bool IsValidIP(string ip)
{
if (System.Text.RegularExpressions.Regex.IsMatch(ip,"[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}"))
{
string[] ips = ip.Split('.');
if (ips.Length == 4 || ips.Length == 6)
{
if(System.Int32.Parse(ips[0]) < 256 && System.Int32.Parse(ips[1]) < 256 & System.Int32.Parse(ips[2]) < 256 & System.Int32.Parse(ips[3]) < 256)
return true;
else
return false;
}
else
return false;

}
else
return false;
}

        public static string GetClientIp()
        {
            string userIP = System.Web.HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
            if (userIP == null || userIP == "")
            {
                //没有代理服务器,如果有代理服务器获取的是代理服务器的IP
                userIP = System.Web.HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
            }
            return userIP;

        }

    }
}

[/Quote]学习!!!
seesea125 2010-01-21
  • 打赏
  • 举报
回复
GetClientIp() 就是可以得到用户的IP,然后这个IP可以转换成数字EncodeIP()
然后下一个QQ的IP库,一般是ACCESS的,然后给导入到sql server,他的IP段也是数字的,EncodeIP()
后的数字,跟他的ip比较一下,如果相等就能得出地域了
seesea125 2010-01-21
  • 打赏
  • 举报
回复
namespace BLL.Common.Helper
{
using System;
using System.Text;

public class IPAddress
{
#region 编码IP地址
/// <summary>
/// 编码IP地址
/// </summary>
/// <param name="IP">原始IP地址</param>
/// <returns>编码IP地址</returns>
public static Int64 EncodeIP(string IP)
{
Int64 EncodeIP;
if (IsValidIP(IP))
{
string[] UserIP = IP.Split('.');
EncodeIP = (Convert.ToInt64(UserIP[0]) * 256 * 256 * 256) + (Convert.ToInt64(UserIP[1]) * 256 * 256) + (Convert.ToInt64(UserIP[2]) * 256) + Convert.ToInt64(UserIP[3]);
}
else
{
EncodeIP = 2130706433;
}
return EncodeIP;
}
#endregion

#region 解码IP地址
/// <summary>
/// 解码IP地址
/// </summary>
/// <param name="IP">编码IP地址</param>
/// <returns>原始IP地址</returns>
public static string DecodeIP(Int64 IP)
{
Int64 int_0, int_1;

//得到第四位IP
int_0 = IP % 256;
int_1 = IP / 256;
string ReturnIP = int_0.ToString();

//得到第三位IP
int_0 = int_1 % 256;
int_1 = int_1 / 256;
ReturnIP = int_0.ToString() + "." + ReturnIP;

//得到第二位IP
int_0 = int_1 % 256;
int_1 = int_1 / 256;
ReturnIP = int_0.ToString() + "." + ReturnIP;

//得到第一位IP
ReturnIP = (int_1 % 256).ToString() + "." + ReturnIP;

return ReturnIP;
}
#endregion

public static bool IsValidIP(string ip)
{
if (System.Text.RegularExpressions.Regex.IsMatch(ip,"[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}"))
{
string[] ips = ip.Split('.');
if (ips.Length == 4 || ips.Length == 6)
{
if(System.Int32.Parse(ips[0]) < 256 && System.Int32.Parse(ips[1]) < 256 & System.Int32.Parse(ips[2]) < 256 & System.Int32.Parse(ips[3]) < 256)
return true;
else
return false;
}
else
return false;

}
else
return false;
}

public static string GetClientIp()
{
string userIP = System.Web.HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
if (userIP == null || userIP == "")
{
//没有代理服务器,如果有代理服务器获取的是代理服务器的IP
userIP = System.Web.HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
}
return userIP;

}

}
}
harvesthouhao 2010-01-21
  • 打赏
  • 举报
回复
每次有IP进来就存到数据库中,每次存储IP信息时删除30分钟内没有更新POSTDATE字段的IP信息。另外IP信息库网上有下载(查询来源)

62,254

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧