| 如果你想捕获Java程序中的网络包,那么你需要一些辅助工具,因为核心Java API不能访问底层的网络数据。但Jpcap是一种提供在Windows或UNIX系统上进行这种访问的Java API。
Jpcap不是一种纯粹的Java解决方案;它依赖本地库的使用。在Windows 或 UNIX上,你必须有必要的第三方库,分别是WinPcap或libpcap。
Jpcap的工作原理
Jpcap使用一个事件模型来让你处理包。首先你必须创建一个执行接口jpcap.JpcapHandler的类。
public class JpcapTip 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, 1028, false, 10000);
openDevice()方法将一个参数返回到用以捕获的Jpcap对象。既然有了Jpcap实例,你可以调用processPacket() 或loopPacket()开始监听了。这两种方式都带有两个参数:捕获的最大包数可以是-1(说明没有限制);执行JpcapHandler的一个类的实例。
如果你调用processPacket(),那么Jpcap将一直捕获包,直到超过openDevice中规定的时限或达到了规定的最大包数。loopPacket()则将一直捕获包,直到达到最大包数,如果没有最大数限制,它将永远运行下去。就像下面这样调用:
jpcap.loopPacket(-1, new JpcapTip());
| | | | State 学科试题测试 教学知识小品 教学心得随笔之一 教育教学论文 教学设计教案 教学心得随笔之二 教学心得随笔之三 工科论文 管理学论文 公共管理论文 经济学论文 法律论文 政治学论文 会计审计论文 艺术论文 其它类论文 证券金融论文 论文指导 财政税收论文 工商管理论文 财务管理论文 计算机论文 医学论文 哲学论文 教育论文 少儿英语 综合英语 考研&MBA 国内考试 企业法律顾问 小语种 出国考试 学习顾问 IT培训 管理培训 商务英语 会计考试 英语考试 司法考试 英语口语 导游员考试 自学考试 公务员考试 报关员考试 CET考试综合信息 CET四级考试 CET六级考试 PETS考试 等级考试综合信息 计算机等级一级考试 计算机等级二级考试 计算机等级三级考试 计算机等级四级考试 全国计算机NIT考试 软考试综合信息 数据库系统工程师 网络管理(程序)员 程序员级 网络设计师 软件设计师(高程) 系统分析师 |