myanaa
Messages postés3Date d'inscriptionmercredi 1 octobre 2008StatutMembreDernière intervention 6 novembre 2008
-
3 nov. 2008 à 16:33
myanaa
Messages postés3Date d'inscriptionmercredi 1 octobre 2008StatutMembreDernière intervention 6 novembre 2008
-
6 nov. 2008 à 16:11
Bonjour à tous,
Actuellement, je travail sur un projet en relation avec la lib Winpcap. Et je me pose certaines questions, dont je n'ai pas trouvé de réponse officiel.
Ma question concerne le fonctionnement la fonction pcap_loop().
int pcap_loop (pcap_t *p, int cnt, pcap_handler callback, u_char *user)
<tt>Cette fonction</tt> appelle une fonction de callback à la réception des paquets pour les
traiter.
Quelqu'un pourrait-il me confirmer quelle envoie bien un paquet par un paquet à la fonction callback et non plusieurs paquets à la fois ?
Autre question que se passe-t-il si la winpcap perd un paquet lors des captures?? A-t-on un moyen d'être au courant de cette perte ?
En gros, la fonction pcap_loop boucle sur les "cnt" paquets reçus depuis son appel et les transmet un à un a la fonction de callback.
Si tu mets la paramètres cnt à 0, pcap_loop va alors boucler à l'infini.
Si une erreur survient (timeout sur un paquet), la fonction pcap_loop sortira en erreur ( surement en retournant un entier < 0).
N'hésites pas à consulter le lien que je t'ai donné plus haut, tout y est écrit noir sur blanc.
myanaa
Messages postés3Date d'inscriptionmercredi 1 octobre 2008StatutMembreDernière intervention 6 novembre 2008 6 nov. 2008 à 10:39
Merci Shell pour ta réponse,
Mais en fait j'avais compris le fonctionnement de la fonction pcap_loop.
Ma question concernait si cette fonction envoyais a ma callback un paquet un par un, ou plusieur, ce qui n'est pa pareil lors de la programmation de la callback.
Après plusieurs test, j'ai pu en conclure et confirmer, quelle envoi bien paquet par paquet.
Sinon concernant la connaissance de perte de paquet, j'ai trouver une fonction: pcap_stat qui permet d'indiquer les paquets reçus ainsi que les droppés. Cependant avec pcap_loop elle nécessite que l'on mette une limite de paquet a traiter.
Voila, je ne sais pas si c'est la meilleur solution, mais c'est celle que j'ai trouvée pour l'instant.
Toutes propositions est la bienvenue.