Frage

Disclaimer: Dies ist für eine Hausaufgabe, aber die Frage ist die Zuordnung nicht in Bezug auf, nur um allgemeine Syntax Seltsamkeit

.

Ich versuche libpcap im Rahmen eines viel größeren Programm zu verwenden, aber wenn ich versuche, den Paket-Header und Daten für jedes Paket gcc zu erhalten beschwert sich, dass der dritte Parameter pcap_next_ex eines inkompatiblen Zeigertyp ist. Hier ist ein Beispielcode, um zu sehen, was ich rede:

#include <stdio.h>
#include <stdlib.h>
#include <pcap.h>

int main()
{
    pcap_t *pcap;
    char pcapErr[PCAP_ERRBUF_SIZE];
    struct pcap_pkthdr *pktHeader;
    u_char *pktData;

    pcap = pcap_open_offline("somefile.pcap", pcapErr);
    if (pcap == NULL)
    {
        fprintf(stderr, "pcap_open_offline failed: %s\n", pcapErr);
        exit(EXIT_FAILURE);
    }

    while (pcap_next_ex(pcap, &pktHeader, &pktData) == 1)
    {
        // do things here
    }

    pcap_close(pcap);

    return EXIT_SUCCESS;
}

Der Mann Seiten angegeben, dass der Prototyp für pcap_next_ex () ist:

int pcap_next_ex(pcap_t *p, struct pcap_pkthdr **pkt_header, const u_char **pkt_data)

Wie genau ist, was ich vorbei einen inkompatiblen Zeigertyp? Danke.

War es hilfreich?

Lösung

Ändern Sie die Deklaration von pktData zu lesen:

const u_char *pktData;

und gcc sollte aufhören, zu jammern.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top