最近,我正在使用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!
packetSize
呢?我如何预测合适的大小? - masoudSystem.out.print(packet.toString())
和System.out.print(packet.toHexdump())
对于查看缓冲区和数据包非常有用。 - Juan Mellado