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. }