JAVA监听数据包

来源:互联网 发布:天猫算法大赛 编辑:程序博客网 时间:2024/04/30 07:02

JAVA的Socket主要在传输层,而网卡,则主要工作在数据链路层,那么JAVA监听数据包,就需要其他包的支持。

首先下载Winpcap,安装好。然后下载Jpcap,解压缩,将jpcap.dll放入jdk安装路径的bin目录下和jre安装路径的bin目录下。然后新建一个工程,将jpcap.jar引入就可以了。

监听数据包的程序如下:

import java.io.IOException;import java.util.Scanner;import jpcap.*;import jpcap.packet.*;public class NetFetcher implements PacketReceiver{@Overridepublic void receivePacket(Packet arg0) {//将抓取的包进行输出System.out.println(arg0);}public static void main(String[] args){//获得网卡设备列表NetworkInterface[] devices = JpcapCaptor.getDeviceList();if(devices.length==0){System.out.println("无网卡信息!");return;}//输出网卡信息for(int i=0;i<devices.length;i++){System.out.println("网卡"+i+"信息:"+devices[i].name);for(NetworkInterfaceAddress address:devices[i].addresses){System.out.print(address.address+" ");}System.out.println("\n");}Scanner scan = new Scanner(System.in);System.out.println("请选择您要监听的网卡序号:");int index = scan.nextInt();//监听选中的网卡try {JpcapCaptor jpcapCaptor = JpcapCaptor.openDevice(devices[index], 2000, false, 20);jpcapCaptor.loopPacket(-1, new NetFetcher());} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}
原创粉丝点击