请问这个利用JPCAP抓包的按钮监听。程序已写完且抓包成功,但有两个小疑点
请教这个利用JPCAP抓包的按钮监听。程序已写完且抓包成功,但有两个小问题!
这里只列出按钮监听的代码吧。
startfca就是按钮的名字,按下它后开始抓包,每抓100个则停止。
抓包都OK,但有两个小问题:
1.这个程序有点诡异,点它的时候,有时候听话有时候不听话。大家请看,我不是有一行代码是输出通讯硬件的信息吗?每次它都能运行,但有的时候却不抓包。我得狂点按钮才能抓包。
2.我想把程序这么改一下:按下抓包后它就不停地抓包。知道按下“停止键”,请问这个怎么监听?能在按钮监听的代码里再套监听代码吗?
startfca.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
try
{
NetworkInterface[] devices=JpcapCaptor.getDeviceList();
JpcapCaptor pcatch=JpcapCaptor.openDevice(devices[0],65535,true,20);
pcatch.setFilter("ip",true);
Packet pfca;
IPPacket ipfca;
String typefca;
for(int i=0;i<devices.length;i++)
{
System.out.println(i+": "+devices[i].name+"("+devices[i].description+")");
System.out.println("Datalink: "+devices[i].datalink_name+"("+devices[i].datalink_description+")");
}
while(true)
{
pfca=pcatch.getPacket();
if(pfca!=null)
{
ipfca=(IPPacket)pfca;
if(ipfca.protocol==6) typefca="TCP";
else if(ipfca.protocol==17) typefca="UDP";
else typefca="ELSE";
pacnum++;
model.addRow(new String[]{""+pacnum,"IPv"+ipfca.version,""+ipfca.src_ip,""+ipfca.dst_ip,typefca,""+ipfca.len});
}
if(pacnum%100==0) break;
}
pcatch.close();
}
catch(IOException ex)
{
System.err.println(ex);
}
}
});
------解决思路----------------------
这个没有研究过,看看下面几篇文章不知道有没有帮助。
http://www.4byte.cn/question/242894/inspect-outgoing-packets-and-delay-them-with-jpcap.html
http://www.4byte.cn/question/412767/get-list-of-unused-lan-ip-addresses.html
http://www.4byte.cn/question/557694/get-full-tcp-packet-data-using-jpcap.html
这里只列出按钮监听的代码吧。
startfca就是按钮的名字,按下它后开始抓包,每抓100个则停止。
抓包都OK,但有两个小问题:
1.这个程序有点诡异,点它的时候,有时候听话有时候不听话。大家请看,我不是有一行代码是输出通讯硬件的信息吗?每次它都能运行,但有的时候却不抓包。我得狂点按钮才能抓包。
2.我想把程序这么改一下:按下抓包后它就不停地抓包。知道按下“停止键”,请问这个怎么监听?能在按钮监听的代码里再套监听代码吗?
startfca.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
try
{
NetworkInterface[] devices=JpcapCaptor.getDeviceList();
JpcapCaptor pcatch=JpcapCaptor.openDevice(devices[0],65535,true,20);
pcatch.setFilter("ip",true);
Packet pfca;
IPPacket ipfca;
String typefca;
for(int i=0;i<devices.length;i++)
{
System.out.println(i+": "+devices[i].name+"("+devices[i].description+")");
System.out.println("Datalink: "+devices[i].datalink_name+"("+devices[i].datalink_description+")");
}
while(true)
{
pfca=pcatch.getPacket();
if(pfca!=null)
{
ipfca=(IPPacket)pfca;
if(ipfca.protocol==6) typefca="TCP";
else if(ipfca.protocol==17) typefca="UDP";
else typefca="ELSE";
pacnum++;
model.addRow(new String[]{""+pacnum,"IPv"+ipfca.version,""+ipfca.src_ip,""+ipfca.dst_ip,typefca,""+ipfca.len});
}
if(pacnum%100==0) break;
}
pcatch.close();
}
catch(IOException ex)
{
System.err.println(ex);
}
}
});
------解决思路----------------------
这个没有研究过,看看下面几篇文章不知道有没有帮助。
http://www.4byte.cn/question/242894/inspect-outgoing-packets-and-delay-them-with-jpcap.html
http://www.4byte.cn/question/412767/get-list-of-unused-lan-ip-addresses.html
http://www.4byte.cn/question/557694/get-full-tcp-packet-data-using-jpcap.html