Fonctionnement de la Winpcap

myanaa Messages postés 3 Date d'inscription mercredi 1 octobre 2008 Statut Membre Dernière intervention 6 novembre 2008 - 3 nov. 2008 à 16:33
myanaa Messages postés 3 Date d'inscription mercredi 1 octobre 2008 Statut Membre Derniè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 ?

Merci à tous pour vos éventuelles réponses.

4 réponses

DeAtHCrAsH Messages postés 2670 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 6 février 2013
5 nov. 2008 à 14:10
Salut,

En faisant une recherche google sur pcap_loop je suis tombé sur ce lien :
http://www.ncsa.uiuc.edu/UserInfo/Resources/Hardware/IBMp690/IBM/usr/share/man/info/en_US/a_doc_lib/libs/basetrf1/pcap_loop.htm

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.

Shell
0
myanaa Messages postés 3 Date d'inscription mercredi 1 octobre 2008 Statut Membre Derniè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.
0
DeAtHCrAsH Messages postés 2670 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 6 février 2013
6 nov. 2008 à 15:51
C'est ce que je t'ai répondu ;)

Quote :
[...] les transmet un à un a la fonction de callback [...]

Shell
0
myanaa Messages postés 3 Date d'inscription mercredi 1 octobre 2008 Statut Membre Dernière intervention 6 novembre 2008
6 nov. 2008 à 16:11
Ah oui, pardon , faut que j'apprenne à lire :)
0
Rejoignez-nous