JAVA的Socket主要在传输层,而网卡,则主要工作在数据链路层,那么JAVA监听数据包,就需要其他包的支持。
首先下载Winpcap,安装好。然后下载Jpcap,解压缩,将jpcap.dll放入jdk安装路径的bin目录下和jre安装路径的bin目录下。然后新建一个工程,将jpcap.jar引入就可以了。
监听数据包的程序如下:
[java]
view plain
copy
1. import java.io.IOException;
2. import java.util.Scanner;
3. import jpcap.*;
4. import jpcap.packet.*;
5. public class NetFetcher implements PacketReceiver{
6.
7. @Override
8. public void receivePacket(Packet arg0) {
9.
10. //将抓取的包进行输出
11. System.out.println(arg0);
12. }
13.
14. public static void main(String[] args){
15.
16. //获得网卡设备列表
17. NetworkInterface[] devices = JpcapCaptor.getDeviceList();
18. if(devices.length==0){
19.
20. "无网卡信息!");
21. return;
22. }
23. //输出网卡信息
24. for(int i=0;i<devices.length;i++){
25.
26. "网卡"+i+"信息:"+devices[i].name);
27. for(NetworkInterfaceAddress address:devices[i].addresses){
28.
29. " ");
30. }
31. "\n");
32. }
33.
34. new Scanner(System.in);
35. "请选择您要监听的网卡序号:");
36. int index = scan.nextInt();
37.
38. //监听选中的网卡
39. try {
40. 2000, false, 20);
41. 1, new NetFetcher());
42. catch (IOException e) {
43. // TODO Auto-generated catch block
44. e.printStackTrace();
45. }
46. }
47. }