Jnetpcap, подготовка пакета UDP / TCP / IP / ICMP

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

6
задан masoud 26 February 2012 в 12:09
поделиться