Error is :Exception in thread "main" java.lang.UnsatisfiedLinkError:
jpcap.JpcapCaptor.getDeviceList()[Ljpcap/NetworkInterface; at
jpcap.JpcapCaptor.getDeviceList(Native Method) at
jcap.network.main(network.java:63)
import jpcap.*;
import jpcap.packet.*;
import java.io.*;
import jpcap.packet.TCPPacket.*;
import java.io.*;
import jpcap.JpcapCaptor.*;
class Network implements PacketReceiver {
System.out.println(System.getProperty("java.library.path"));
String sp=null;
String dp=null;
String window=null;
String sequence=null;
String acknowledge=null;
FileWriter ff=null;
String da=null;
public void receivePacket(Packet pt) {
try {
if(pt instanceof TCPPacket) {
TCPPacket tp=(TCPPacket)pt;
ff=new FileWriter("da.txt",true);
sp=new Integer(tp.src_port).toString();
dp=new Integer(tp.dst_port).toString();
window=new Integer(tp.window).toString();
sequence=new Long(tp.sequence).toString();
acknowledge=new Long(tp.ack_num).toString();
byte[]dat=tp.data;
da=new String(dat);
ff.write("\r\n Source port is :-"+sp);
ff.write("\r\n Desination port is:-"+dp);
ff.write("\r\n Sequence no is:-"+sequence);
ff.write("\r\n Acknowledgement no is:-"+acknowledge);
ff.write("\r\n Status of rsv1 flag is:-"+tp.rsv1);
ff.write("\r\n Status of rsv2 flag is:-"+tp.rsv2);
ff.write("\r\n Status of Syn flag is:-"+tp.syn);
ff.write("\r\n Status of Urg flag is:-"+tp.urg);
ff.write("\r\n Status of Fin flag is:-"+tp.fin);
ff.write("\r\n Data :-"+da);
ff.write("\r\n");
ff.write("\r\n");
ff.close();
}
} catch(Exception e) {
System.out.println(e.getMessage());
}
}
public static void main(String args[])throws IOException {
int i;
try {
NetworkInterface[] devices = JpcapCaptor.getDeviceList();
//for each network interface
for (i = 0; i < devices.length; i++) {
//print out its name and description
System.out.println(i+": "+devices[i].name + "(" +
devices[i].description+")"+devices[i].loopback);
//print out its datalink name and description
System.out.println(" datalink: "+devices[i].datalink_name + "("
+ devices[i].datalink_description+")");
//print out its MAC address
System.out.print(" MAC address:");
for (byte b : devices[i].mac_address)
System.out.print(Integer.toHexString(b&0xff) + ":");
System.out.println();
//print out its IP address, subnet mask and broadcast address
for (NetworkInterfaceAddress a : devices[i].addresses)
System.out.println(" address:"+a.address + " " + a.subnet + " "+
a.broadcast);
}
JpcapCaptor captor=JpcapCaptor.openDevice(devices[0], 65535, true, 20);
captor.loopPacket(-1,new Network());
captor.close();
}
catch(Exception e) {
System.out.println(e.getMessage());
}
}
}
答案 0 :(得分:4)
UnsatisfiedLinkError意味着尚未加载'JpcapCaptor'本机库,
static{
System.loadLibrary("JpcapCaptor.dll");
}
答案 1 :(得分:1)
UnsatisfiedLinkError的javadoc非常简单。你缺少一些jcap所需的lib。
将来,当你得到一个你不理解的例外时,javadocs是一个很好的起点。
答案 2 :(得分:0)
在您的计算机中安装jpcap,然后尝试运行您的代码。 你可以从这里下载jpcap.exe文件http://jpcap.software.informer.com/0.7/
答案 3 :(得分:0)
在完全编译和链接Jpcap(在Mac OS X计算机上使用eclipse)后,我遇到了同样的问题。原来有两个版本的Jpcap:https://github.com/jpcap/jpcap(没有JpCaptor),以及一个带有JpCaptor的版本:https://github.com/mgodave/Jpcap。也许这有帮助。