В последнее время я использую 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!