最近,我使用 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);
}
}
错误:
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)
如何构建该数据包然后发送它Pcap.sendPacket()
?
注意:我真的对逐字节准备数据包不感兴趣...... C/C++ libpcap 和 Jpcap 有工作功能,但我想使用 Jnetpcap!