📄 captor.java
字号:
package cn.myownlife.www;
import java.io.IOException;
import jpcap.JpcapCaptor;
import jpcap.NetworkInterface;
import jpcap.PacketReceiver;
import jpcap.packet.Packet;
/*利用多线程实现抓包,每次抓一个*/
public class Captor {
static int len = 1024;//抓到的最大包长
static JpcapCaptor cap=null;
static NetworkInterface[] devices;//驱动
JpcapCaptor jpcap = null;
Jmain frame;
/**/
public void setJFrame(Jmain frame){
this.frame=frame;
}
/*打开适配器,开始抓包*/
public void capturePacketsFromDevice() throws IOException {
if(jpcap!=null)jpcap.close();
devices = JpcapCaptor.getDeviceList();
if(devices != null){
}
jpcap = JpcapCaptor.openDevice(devices[0], len, true, 1000);
if (jpcap != null) {
startCaptureThread();
}
}
private Thread captureThread;
/*开始抓包*/
private void startCaptureThread(){
if(captureThread != null)
return;
captureThread = new Thread(new Runnable(){
public void run(){
while(captureThread != null){
jpcap.processPacket(1, handler);
}
}
});
captureThread.setPriority(Thread.MIN_PRIORITY);
captureThread.start();
}
/*设置captureThread为NULL*/
void stopcaptureThread(){
captureThread = null;
}
/*停止抓包*/
public void stopCapture(){
System.out.println(2);
stopcaptureThread();
}
/*调用包的出来函数*/
private PacketReceiver handler=new PacketReceiver(){
public void receivePacket(Packet packet) {
frame.dealPacket(packet);
}
};
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -