2010-11-25 6 views
1

-1 est-il un délai de lecture valide pour pcap?délai de lecture zéro pour pcap

J'ai été informé par quelqu'un que le réglage de to_ms à -1 dans pcap_open_live(char *device, int snaplen, int promisc, int to_ms, char *errbuf); le fait retourner immédiatement quand un paquet est détecté - en fait un timeout nul. Cela fait beaucoup de sens qu'il y ait un moyen de définir un délai d'attente nul, mais alors pourquoi ne pas faire -1 être infini et 0 être 0? Ce serait plus logique. De plus, je n'ai pas pu confirmer l'effet d'une valeur to_ms de -1 sur pcap.

Donc, -1 est-il une valeur de délai valide? Si oui, quel effet at-il? Si non, existe-t-il un moyen de définir un délai de détection de zéro?

Répondre

1

Je ne pense pas que votre explication ait un sens.

Un délai d'attente pour un appel en lecture ne doit intervenir que si aucune donnée n'est présente pour être lue. Dans votre cas, si un paquet est jamais reçu, le délai d'attente devrait contrôler combien de temps l'appel est en attente, avant de revenir. Si les données sont reçues, le délai d'attente n'a pas d'importance, puisque l'appel doit revenir dès qu'il détecte (et lit) les données, c'est ce que vous lui demandez de faire.

De reading the code, il semble un délai d'attente négatif PPCE signifie « mode non-bloquant », ce qui en fera pas attendre du tout, mais revenir à la place directement si aucune donnée est disponible.

+0

Vous vous méprenez. Le délai d'attente de lecture dans ce cas s'applique lorsqu'il y a _are_ paquets à lire - pour citer de la page man, 'Le timeout read est utilisé pour arranger que la lecture ne retourne pas nécessairement immédiatement lorsqu'un paquet est vu, mais qu'il attende de temps pour permettre à plus de paquets d'arriver et de lire plusieurs paquets à partir du noyau OS en une seule opération ». Par conséquent, le délai d'attente de lecture provoque le retard du retour après la détection d'un paquet. – Benubird

+0

En regardant le code, je suis d'accord avec @unwind. – jrwren

Questions connexes