我已經使用JPCAP將一段代碼片段寫入了cpature ping。我寫的代碼如下:捕獲ping數據包拋出異常(太多實例)
while (true) {
try {
PacketCapture m_pcap;
m_pcap = new PacketCapture();
m_pcap.open("\\Device\\NPF_{007262BD-....-7EE83D72EBEA}",true);//param 1 is actual device ID
m_pcap.setFilter("proto ICMP", true);
pktlistener a = new pktlistener(); //handles the packet
m_pcap.addPacketListener(a);
System.out.println("going to sleep");
Thread.sleep(1 * 1000);// Waiting for 1 second before ending capture
System.out.println("woken up");
m_pcap.removePacketListener(a);
m_pcap.endCapture();
m_pcap.close();
a = null;
m_pcap = null;
} catch (Exception e) {
e.printStackTrace();
}
}
現在上面的代碼在每一秒鐘後開始一個新的捕獲。上述的問題是,在循環10次,之後,它引發異常:
Exception in thread "Thread-6" java.lang.Error: Too many instances, exceeds 10
at net.sourceforge.jpcap.capture.PacketCapture.<init>(PacketCapture.java:51)
Q1。我如何防止這一點。我需要每秒創建一個新的PacketCapture。 Q2302。有沒有其他更簡單的方法來捕獲通過Java在系統上收到的ping消息?
瀏覽此鏈接。它可以幫助你。 [1]:http://stackoverflow.com/questions/4452814/how-to-send-ping6-request-using-java-library-jpcap?rq=1 –