|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Mar 2009
Messaggi: 753
|
[C++] Packet capture - pcap_next()
Ciao,
stò rilevando molti problemi con la funzione pcap_next() che dovrebbe restituirmi un puntatore "const u_char*". pcap_next() mi ritorna un pacchetto, ma la variabile const u_char* non mi varia, probabilemnte per colpa di "const"??? questo è il docie che controlla la funzione: Codice:
void TCPMon::GetNextPacket()
{
struct pcap_pkthdr* pcap_header = new(struct pcap_pkthdr);
if((packet = pcap_next(handle,pcap_header)) == NULL)
{
ErrorBuffer->clear();
ErrorBuffer->append("Cattura pacchetto non riuscita");
PrintErrorAndExit();
}
delete pcap_header;
}
La routine if, non entra mai nel ciclo di errore, anche se packet è == '\0'. Non posso no dichiarare "const" packet perchè mi da un errore di compilazione. Sapete darmi un consiglio? Grazie. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Mar 2009
Messaggi: 753
|
Mi è venuta in mente un'altra cosa,
quando l'applicazione entra in loop, se uso pcap_loop(), l'interfaccia grafica non mi risponde più... questo perchè il processore è occupato nel mio ciclo, è corretto? In linea di comando avevo già realizzato programmi similari ma non avevo certo questi problemi da gestire... Possibile che sia questo il problema? Nel caso come posso fare secondo voi? |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Mar 2009
Messaggi: 753
|
Dopo ulteriori prove ho verificato che:
pcap_next_ex() mi ritorna correttamente, la struttura pcap_pkthdr viene riempita correttamente, nulla da fare per il pacchetto che mi torna vuoto..... altra cosa.... riguarda proprio l'interfaccia, come posso fare in modo che sia possibile interrompere il packet capture con i pulsanti, dunque i segnali emessi dai Widgets non riescono ad interrompere le altre attività.... ciò che mi manca credo sia il modo in cui occorre gestire le operazioni quando si utilizza l'interfaccia grafica...... qualcuno sa aiutarmi? |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 18:10.



















