View Single Post
Old 02-01-2010, 23:05   #1
Teo@Unix
Senior Member
 
L'Avatar di Teo@Unix
 
Iscritto dal: Mar 2009
Messaggi: 753
[C++] Qt e libpcap - pcap_next()

Stò implementando una classe con le librerie libpcap

ho un problema con la funzione pcap_next(), questa mi ritorna senza errore, ma il pacchetto ritornato è vuoto....,o meglio punta a "/0"

Codice:
void Cpcap::gotPackets()
{
    struct pcap_pkthdr* h;
    while(1)
    {
        sem.acquire(1);
        if(stop_FLAG) return;
        memset(h,0,sizeof(pcap_pkthdr));
        if((packet = pcap_next(handle,h)) == NULL)
        {
            this->next_Failed(tr("Errore su pcap_next()"),tr("Si è verificato un errore durante la cattura di un pacchetto"));
            return;
        }
        this->IHavePacketForYou(packet); // Pacchetto
    }
}
l'elemento packet è dichiarato const u_char* packet, ho controllato e non deve essere allocata memoria per questo, perchè ci dovrebbe pensare già la funzione interna di libreria.... (l'esempio ufficiale che lo conferma è questo)

ho provato anche in quest'altro modo, ma sempre lo stesso problema

Codice:
void Cpcap::gotPackets()
{
    struct pcap_pkthdr* h;
    while(1)
    {
        sem.acquire(1);
        if(stop_FLAG) return;
        if(pcap_next_ex(handle,&h,&packet)==-1)
        {
            this->next_Failed(tr("Errore su pcap_next()"),tr("Si è verificato un errore durante la cattura di un pacchetto"));
            return;
        }
        this->IHavePacketForYou(packet); // Pacchetto
    }
}
Cosa ne dite?
Il programma continua e vengono aggiunti elementi ad un QListWigdet per ogni pacchetto, però bianchi....
Teo@Unix è offline   Rispondi citando il messaggio o parte di esso