为什么jtcap.JpcapCaptor类中的getDeviceList()方法在JEthereal中是原生的?

时间:2013-03-01 12:10:34

标签: java packet-capture jpcap native-methods

我最近下载了JEthereal.jar文件,通过JEthereal在我的互联网连接上捕获数据包流量,并进行了研究。它从.pcap文件中读取数据包就好了但是在尝试捕获数据包时它给了我一条消息:

  

“找不到设备。这可能意味着你安装了JPcap但没有   libpcap / WinPcap。请按照网站上的说明进行操作   安装它。这需要大约15秒,非常值得。“

所以我下载了它的源代码并在Eclipse中打开它,因为我已经安装了WinPcap

在浏览代码时,我来到了应该发现网络设备的部分。 getDeviceList()包中JpcapCaptor类的静态方法jpcap,它应返回NetworkInterface类型的网络设备数组。以下是在互联网上发表的声明:

public static NetworkInterface[] getDeviceList()

但是,在我下载的源代码中,方法没有正文,并且已声明为native,即

public static native NetworkInterface[] getDeviceList();

我现在该怎么做才能识别我的设备?在网上搜索并在此门户网站上搜索时,我发现我的system32文件夹中应该存在jpcap.dll文件(我使用的是Windows7),我应该为此安装WinPcap。我已经安装了WinPcap并且system32文件夹中没有jpcap.dll个文件。另外,我想我应该将system32添加到我的PATH变量中,我还没有这样做,因为那里没有jpcap.dll

Thanx提前!!

2 个答案:

答案 0 :(得分:0)

如果“在网上搜索并在此门户上搜索我知道我的system32文件夹中应该存在jpcap.dll文件(我使用的是Windows7),我应该为此安装WinPcap “那么,俗话说,someone is wrong on the Internet

jpcap.dll 是WinPcap的一部分,你安装WinPcap来获取它。您需要安装Keita Fujii的Jpcap(他似乎不再使用它,并且JEthereal网站链接的网站不再存在,但JEthereal网站有一些本地下载链接,有些人创建了他们自己的分支它)。

您是否安装了任何版本的Jpcap?如果是这样,你从哪里得到的?它可能是与JEthereal不兼容的版本。

答案 1 :(得分:0)

  

为什么jtcap.JpcapCaptor类中的getDeviceList()方法在JEthereal中是原生的?

因为getDeviceList()是作为本机(C / C ++)代码实现的。

  

在尝试捕获数据包时,它给了我一条消息:“找不到设备......”

     

我正在使用Windows7

TOUCHE。从Windows Vista(这是第一个实现类似root的pretensions的Windows)开始,您需要以管理员身份运行jpcap 。在系统重新启动后第一次运行jpcap时,必须完成至少(以便授权winpcap库访问网络资源)。

来自jpcap FAQ

  

问:我无法获取网络接口列表或无法捕获任何数据包。为什么?

     

可能是因为您没有管理权限   需要运行基于Jpcap的应用程序。

     

在Windows 2000 / XP上,您的帐户应位于“管理员”组中。

     

在Windows Vista上,即使您的帐户位于管理员组中,   您仍然需要使用“以管理员身份运行”选项。要使用   选项,右键单击应用程序图标,然后选择“运行方式”   管理员“。如果你的应用程序是基于命令行的,你需要   使用“以管理员身份运行”选项打开命令提示符,然后运行   您在命令提示符下的应用程序。