ubuntu下使用jpcap

本文详细记录了如何在Ubuntu环境下安装libpcap并编译libjpcap.so,以实现网络拓扑结构发现的程序开发。包括安装libpcap、下载源码包、编译libjpcap.so、导入库及测试等步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

因为我网上找的教程貌似都过期了,反正我是没装成功,故记下我自己的过程

一、安装libpcap

我在ubuntu终端输入

tcpdump --v

看到有libpcap 1.6.2还是最新的,美滋滋的以为不用安装了,后来编译后面需要的类库的时候发现自己太天真了,ubuntu安装还是很简单的,直接

sudo apt-get install libpcap-dev

光看名字应该就是给我们开发人员用的哈,之前的那个应该是tcpdump的专用


二、下载源码包

https://github.com/mgodave/Jpcap,这个地址是根据网上教程给的不能访问的网址搜到的,直接在github里面搜jpcap是第二个结果,里面有java和c的源码,解压后可以看到lib里面有jpcap.jar和Jpcap.dll,没有我们要的libjpcap.so(难道是让我们一定安装libpcap-dev?我没试过不装直接用能不能行)想偷懒的话可以直接试一下编译好的libjpcap.so

32位的http://download.youkuaiyun.com/detail/niutourenqz/5774081(是我之前偷懒没成功下载的,我64位提出格式错误,这个应该就是32位的)

64位的http://download.youkuaiyun.com/detail/yyy269954107/8145497


三、编译libjpcap.so

前面偷懒的可以略过此步,先到src/main/c里面找到Makefile,打开修改成你的jdk的安装路径

JAVA_DIR = /usr/lib/jvm/java-7-oracle
保存后在终端cd到/src/main/c目录下执行
make
前提是你要安装了make命令,ubuntu应该可以直接通过安装
sudo apt-get install make
不出意外的话应该就能再当前路径下得到libjpcap.so了


四、导入库

java执行

System.out.println(System.getProperty("java.library.path"));  
选取其中一个路径把libjpcap.so放进去就行了,我放的是/usr/lib内,让后eclipse导入jpcap.jar,就可以了


五、测试

doc文件夹下的一个示例,运行一下,如果成功的话应该就配置完成了

import jpcap.JpcapCaptor;
import jpcap.NetworkInterface;
import jpcap.NetworkInterfaceAddress;

public class Test {

	public static void main(String[] args) {
		//Obtain the list of network interfaces
		NetworkInterface[] devices = JpcapCaptor.getDeviceList();

		//for each network interface
		for (int i = 0; i < devices.length; i++) {
		  //print out its name and description
		  System.out.println(i+": "+devices[i].name + "(" + devices[i].description+")");

		  //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);
		}
	}
}



用jpcap就是想做一个网络拓扑结构发现的程序(验证一下想法可不可行),后续会把验证的过程写一篇博客


参考:http://askubuntu.com/questions/347788/how-can-i-install-libpcap-header-files-on-ubuntu-12-04

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值