Les Forums

Les Forums

Les forums sont fermés. Ils restent présent pour consultation et archivage.
Vous pouvez désormais poser vos questions directement dans les commentaires en bas de chaque page du site.
Alors n'hésitez pas à participer

[C++ CLI] Plus rapide que le TIMER

Bonjour,

je fais la capture de paquets et comme vous le savez tous, la vitesse peut aller j'usqu'a 1000mb/s (GIGABIT).
jai fais un timer qui fait la capture chaque 1ms, mais avec ça, il reste très long (beaucoup de packets qui sote), est ce qu'il existe un autre moyen pour faire une capture rapide??

Merci infiniment
Lu abbd,

Oui, il faut créer deux process. Un qui tourne en boucle infinie basé sur l'écoute et l'autre sur l'analyse.

Le premier process ne dois pas tout à fait être une boucle infinie, mais un mode d'écoute bloqué.

@+
_SebF - Sébastien FONTAINE
Bonjour _Sebf,

Merci beaucoup pour votre réponse, cependant je veux savoir si winpcap peut travailler comme Ethereal, est ce qu'il permet de capter tous les paquets ( en prenant en compte 2processus comme vous avez expliquer en dessus ),

Merci
Lu abbd,

Oui car Ethereal est basé aussi dessus 🙂

Pour précision, il faut que ton process d'écoute soit en mode bloquant.

@+
_SebF - Sébastien FONTAINE
Rebonjour _sebf

SVP, Est ce que vous pouvez me montrer comment faire le mode bloqué??.
est ce qu'il faut faire:

[code:1:3247e18454]While (true) { Methode de capture(); }[/code:1:3247e18454]

Jai esayé mais il plante,

Merci infiniment
Lu ,

Avec la commande RECV, tu peux définir son mode bloquant ou pas à l'aide de la fonction

SetSockOpt(...,SOL_SOCKET,SO_RCVTIMEO,...,...).

@+
_SebF - Sébastien FONTAINE
Bonsoir _Sebf,

J'utilise WinPcap, est jai fais un wile comme suite



[code:1:bb0154d949]while((res = pcap_next_ex( adhandle, &header, &pkt_data)) >= 0){

if(res == 0)
/* Timeout elapsed */
continue;

/* convert the timestamp to readable format */
local_tv_sec = header->ts.tv_sec;
ltime=localtime(&local_tv_sec);
strftime( timestr, sizeof timestr, "%H:%M:%S", ltime);

MessageBox::Show(header->ts.tv_usec.ToString());
}[/code:1:bb0154d949]




le pb que il rend le système lourd, comment le rendre légé??

Merci infiniment
Merci beaucoup pour votre réponse, cependant je veux savoir si winpcap peut travailler comme Ethereal, est ce qu'il permet de capter tous les paquets ( en prenant en compte 2processus comme vous avez expliquer en dessus ), ..???