最近,我正在使用Jnetpcap通过网络发送/接收原始数据包.
Jnetpcap提供发送数据包Pcap.sendPacket().此方法获取要发送的原始缓冲区或字节.
另一方面,有org.jnetpcap.protocol.*包含协议头的类,我们可以使用它们来解码捕获的数据包.
当我使用下面的代码来创建一个Ip4数据包时,它会导致NullPointerException:
import org.jnetpcap.protocol.network.Ip4;
public class Test {
public static void main(String[] args) {
Ip4 ip4 = new Ip4();
ip4.ttl(10);
}
}
Run Code Online (Sandbox Code Playgroud)
错误:
Exception in thread "main" java.lang.NullPointerException
at org.jnetpcap.nio.JBuffer.check(Unknown Source)
at org.jnetpcap.nio.JBuffer.setUByte(Unknown Source)
at org.jnetpcap.protocol.network.Ip4.ttl(Unknown Source)
at jaeger.Test.main(Test.java:17)
Run Code Online (Sandbox Code Playgroud)
我如何构建该数据包然后通过它发送Pcap.sendPacket()?
注意:我真的不想逐字节地准备数据包... C/C++ libpcap和Jpcap有工作功能,但我想使用Jnetpcap!
我正在使用 IntelliJ 运行示例 java-jnetpcap 应用程序。我的类路径中有 64 位 JDK,并包含以下依赖项
<dependency>
<groupId>jnetpcap</groupId>
<artifactId>jnetpcap</artifactId>
<version>1.4.r1425-1f</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
我正在运行下面的 example.java 类
public class PcapReaderDemo
{
private static final String filePath= "/src/main/resources/TAPcapture.pcap";
public static void main(String [] arguments){
final StringBuilder errbuf = new StringBuilder();
Pcap pcap = Pcap.openOffline(filePath,errbuf);
if (pcap == null) {
System.err.printf("Error while opening device for capture: "
+ errbuf.toString());
return;
}
PcapPacketHandler<String> jpacketHandler = new PcapPacketHandler<String>() {
public void nextPacket(PcapPacket packet, String user) {
System.out.printf("Received at %s caplen=%-4d len=%-4d %s\n",
new Date(packet.getCaptureHeader().timestampInMillis()),
packet.getCaptureHeader().caplen(), …Run Code Online (Sandbox Code Playgroud) 我尝试添加jnetpcap为依赖项maven。我在网上找到了以下应该添加到pom文件中的内容:
<dependency>
<groupId>jnetpcap</groupId>
<artifactId>jnetpcap</artifactId>
<version>1.4.r1425-1g</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
我尝试了多个版本号,但 Maven 找不到版本:
找不到依赖项“jnetpcap:jnetpcap:1.4.r1425-1g”(版本为红色)。,
我还尝试通过 中的项目结构添加库IntelliJ。存储Maven库可以找到该jnetpcap库,但是当我尝试导入它时,我得到:
未下载 jnetpcap:jnetpcap:1.4.r1425-1g 的文件。
该库可以通过文件手动导入jnetpcap.jar,但我需要它作为我的 pom 中的 Maven 依赖项来创建项目的 jar 文件。否则我会得到一个无法执行的 jar 文件,因为它缺少依赖项。
有人知道我如何包含依赖项,或者如何在不丢失此依赖项的情况下创建项目的 jar 文件?