Java 局域网流量统计

本文介绍了如何使用Java库JPCAP进行局域网流量统计。JPCAP是一个能捕获和发送网络数据包的Java类库,依赖于WinPcap或libpcap。它提供了数据包捕获、过滤和发送的功能。通过创建JpcapHandler实例,结合JpcapCaptor和PacketReceiver类,可以统计上传和下载的数据包大小,区分TCP、UDP和IP包类型。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

这里主要介绍以下JPCAP

Jpcap是2003年日本开发的一套能够捕获、发送网络数据包的java类库。因为核心Java API不能访问底层的网络数据,但Jpcap是一种提供在Windows或UNIX系统上进行这种访问的Java API。Jpcap不是一种纯粹的Java解决方案,它依赖本地库的使用。在Windows 或 UNIX上,你必须有必要的第三方库,分别是WinPcap或libpcap。要在java中使用Jpcap类库需要安装Jpcap的运行和开发环境。

 Jpcap的主要功能

       Jpcap提供了十分方便的数据包捕获方法。Jpcap使用一个事件模型来处理包。首先,必须创建一个执行接口jpcap.JpcapHandler的类。

public class Jpcaphandler implements JpcapHandler {

      public void handlePacket(Packet packet){

          System.out.println(packet);

    }

}

 

为了捕获包,需要让Jpcap知道要用哪个网络设备来监听。API提供了jpcap.Jpcap.getDeviceList()方法以满足这一目的。这个方法返回一列字符串,可以按一下方法如下使用它:

String[] devices = Jpcap.getDeviceList();

 

一旦有了一个设备名称的目录,只要从其中选取一个用来监听:

String deviceName = devices[0];

 

选择一个设备之后,通过Jpcap.openDevice()方法打开它。openDevice()方法需要四个参数:即将打开的设备名,从设备上一次读取的最大字节数,说明是否将设备设为混杂模式的Boolean值,和以后调用processPacket()方法要使用到的超时值。

Jpcapjpcap = Jpcap.openDevice(deviceName, 1024, false, 10000);

 

openDevice()方法将一个参数返回到用以捕获的Jpcap对象。既然有了Jpcap实例,你可以调用processPacket() 或loopPacket()开始监听了。这两种方式都带有两个参数:捕获的最大包数可以是-1(说明没有限制);执行JpcapHandler的一个类的实例。

如果你调用processPacket(),那么Jpcap将一直捕获包,直到超过openDevice中规定的时限或达到了规定的最大包数。loopPacket()则将一直捕获包,直到达到最大包数,如果没有最大数限制,它将永远运行下去。就像下面这样调用:

jpcap.loopPacket(-1, new Jpcaphandler());

 

       对于捕获的数据包,可以利用Jpcap中的Packet及其子类进行分类分析,获得数据包的详细信息。

       Jpcap还有进行数据包过滤的函数setFilter(java.lang.String condition, boolean optimize)。其中condition是过滤条件。在进行数据包捕获前设置过滤条件,可以将不感兴趣的数据包剔除。

jpcap.setFilter("host 210.212.147.149",true);

 

因为Jpcap对数据包进行了分类,而数据包中的关键字段也有接口调用,所以在设置过滤条件时也可以在利用这些条件进行更细致的分类。这将在后面的章节中介绍。

       Jpcap还提供了用来发送数据包的一个类JpcapSender,可以用来发送IPPacket及其子类,包括IPPacket、ICMPPacket、TCPPacket、UDPPacket。定义好一个相应的包后,就可以利用sendPacket函数发送数据包。

JpcapSendersender=JpcapSender.openDevice(Jpcap.                               ()[0]);

sender.sendPacket(p); //send a packet

 

                  

上面是对JPCAP的基本介绍。这是这个程序的基础。

 

要想了解更多有关JPCAP的有关内容请访问http://netresearch.ics.uci.edu/kfujii/Jpcap/do

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值