当前位置: 代码迷 >> Java相关 >> [求助]关于网络流量计数器的问题
  详细解决方案

[求助]关于网络流量计数器的问题

热度:317   发布时间:2007-04-10 19:35:23.0
[求助]关于网络流量计数器的问题
我想建立一个网路流量的计数器~(不是浏览计数器哦)

这个东西类似于打开“我的连接”所看见的数据包的数量。(看附件)

当然啦~如果能计算某个端口(80或者8080)的进或者出流量也是可以的~

我大概知道用java.net.* 但我不知道具体用啥可以监听到这个连接是否在传递数据(类似于C#的TCPListener)

有谁可以给我指点指点么?不胜感激~


搜索更多相关的解决方案: 网络  计数器  流量  java  

----------------解决方案--------------------------------------------------------
那就是流量监控?
----------------解决方案--------------------------------------------------------

那你监控网卡就可以了.
import jpcap.packet.*;

public class EthernetAnalyzer extends JDPacketAnalyzer
{
private static final String[] valueNames={
"Frame Type",
"Source MAC",
"Destination MAC"
};
private EthernetPacket eth;

public EthernetAnalyzer(){
layer=DATALINK_LAYER;
}

public boolean isAnalyzable(Packet p){
return (p.datalink!=null && p.datalink instanceof EthernetPacket);
}

public String getProtocolName(){
return "Ethernet Frame";
}

public String[] getValueNames(){
return valueNames;
}

public void analyze(Packet p){
if(!isAnalyzable(p)) return;
eth=(EthernetPacket)p.datalink;
}

public Object getValue(String valueName){
for(int i=0;i<valueNames.length;i++)
if(valueNames[i].equals(valueName))
return getValueAt(i);

return null;
}

Object getValueAt(int index){
switch(index){
case 0: return new Integer(eth.frametype);
case 1: return eth.getSourceAddress();
case 2: return eth.getDestinationAddress();
default: return null;
}
}

public Object[] getValues(){
Object[] v=new Object[3];
for(int i=0;i<3;i++)
v[i]=getValueAt(i);

return v;
}
}


----------------解决方案--------------------------------------------------------
有意思

import jpcap.packet.*;
是那个包的?

----------------解决方案--------------------------------------------------------
提示: 该帖被管理员或版主屏蔽

天下归心
2007-04-10 15:07:04
pyzheng

等 级:新手上路
帖 子:102
专家分:0
注 册:2004-12-5
  得分:0 

呵呵 有意思 研究下


----------------解决方案--------------------------------------------------------
怎样用,EthernetPacket类,是你自己写的,还是Java扩展包里的?
----------------解决方案--------------------------------------------------------