Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 25/07/2007, à 18:03

amadeus

utiliser libpcap avec C++

Bonjour

Ma question concerne un point très précis. Dans libpcap, il existe un type de fonctions précis qui peuvent être utilisées comme callback pour traiter les paquets qui arrivent. Mon problème, c'est que libpcap est fait sous C, et il refuse d'accepter des fonctions d'instance. Ceci est la déclaration du type:

typedef void (*pcap_handler)(u_char *, const struct pcap_pkthdr *,
			     const u_char *);

et voici ma fonction :

void
PcapDevice::packet_handler(u_char* dumpfile, const pcap_pkthdr* header, const u_char* pkt_data)
{
	long last = this->get_last_packet_usec_long();
	ofstream outputFile;
	outputFile.open(dumpfile);
	outputFile << (header->ts.tv_usec -last);
	outputFile.close();
	this->set_last_packet_usec_long(header->ts.tv_usec);
}

qui comme vous pouvez le voir utilise les avriables d'instance. La ligne rejeté est celle-ci :

pcap_loop(adhandle, number_of_packets, packet_handler, (unsigned char *)dumpfile);

Et en commentant le contenu de packet_handler et en le déclarant comme statique, il n'y a plus de problème.

Merci smile


Dumbledore returns from the dead and declares it to be hammertime, Harry proceeds to break it down, Voldemort is unable to touch this.

Hors ligne