急。。。有一个多用户的Javaweb系统,如何采集每个用户使用该系统时所消耗的网络流量啊? 5C

有一个多用户的Javaweb系统,如何采集每个用户使用该系统时所消耗的网络流量啊?注意是每个用户的,而不是所有用户加在一起总流量。
现在比较着急的问题就是当用户使用系统时,如何采集到用户的ip值和该ip所使用的网络流量,并且要将 时间+ip+网络流量 信息保存下来,然后要在web前端进行显示,后续还会利用这些信息进行统计分析。
这里为什么要获得ip的原因是用户可以在任意地点使用系统,用户没有对应的固定ip,我要通过这个ip值才能知道是哪个用户在使用。

3个回答

如果用struts2的话,可以用拦截器,也可以用web服务器的过滤器来实现流量的统计。

看你用的是什么框架,一般都可以用拦截器解决的

qqaazz211
的阿尔额 用的ssh框架,拦截器对于获取ip值好实现,但采集对应ip所使用的流量好像实现不了吧
一年多之前 回复

/**
* 获取客户端ip地址(可以穿透代理)
*
* @param request
* @return
*/
public static String getRemoteAddr(HttpServletRequest request) {
String ip = request.getHeader("X-Forwarded-For");
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("Proxy-Client-IP");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("WL-Proxy-Client-IP");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("HTTP_CLIENT_IP");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("HTTP_X_FORWARDED_FOR");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getRemoteAddr();
}
return ip;
}
private static final String[] HEADERS_TO_TRY = {
"X-Forwarded-For",
"Proxy-Client-IP",
"WL-Proxy-Client-IP",
"HTTP_X_FORWARDED_FOR",
"HTTP_X_FORWARDED",
"HTTP_X_CLUSTER_CLIENT_IP",
"HTTP_CLIENT_IP",
"HTTP_FORWARDED_FOR",
"HTTP_FORWARDED",
"HTTP_VIA",
"REMOTE_ADDR",
"X-Real-IP"};

qqaazz211
的阿尔额 嗯,应用层面的ip值获取我这边比较好实现,主要是获取对应ip所使用的网络流量情况不太好获取
一年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!