Une boucle avec :Citation:
Envoyé par Freed0
WIN: Sleep()
UNX: sleep(), usleep()
select()...
Une boucle avec :Citation:
Envoyé par Freed0
WIN: Sleep()
UNX: sleep(), usleep()
select()...
Exact. Je pensais à une boucle qui récupère les réponses et qui est interrompue toutes les secondes par l'envoi d'une nouvelle requête.Citation:
Envoyé par Skyrunner
sleep() est bloquante, je ne pourrai donc pas récupérer les réponses pendant ce temps là... En plus, je remplis le champ data de la structure icmp avec l'heure de l'envoi. Lors de la récéption, je fais la différence avec l'heure de réception pour obtenir le temps de réponse. Il faudrait donc que les 2 taches soient indépendantes. Un nouveau process ou un thread, ça pourrait le faire ?Citation:
Envoyé par Emmanuel Delahaye
Garde cette solution, c'est assez simple d'utilisation :)Citation:
Envoyé par Freed0
Solution non-supportée par Windows, il me semble.
ha ui c'est vrai...
http://msdn.microsoft.com/library/de...s/settimer.asp
sinon mais pas supporté sur linux :p
si mais par setitimer... :P
Re-salut à tous :P
Finalement, j'ai utilisé les threads vu que je ne connaissais pas encore :)
Maintenant, j'aimerais savoir s'il y a un moyen d'intercepter l'appui des touches Ctrl et C ? Toujours dans le cadre de mon programme d'echos ICMP. Ce serait pour afficher les statistiques du ping lorsque l'utilisateur interrompt le programme.
Merci ;)
J'en profite aussi pour vous demander des conseils divers sur la réalisation d'un client SNMP en lecture seule, c'est-à-dire juste lire les valeurs présentes dans la MIB. D'ailleurs si des personnes sont intéressées, on pourrait attaquer la chose à plusieurs.
Jusqu'à présent, je suis sûr qu'il faudra toucher à l'ASN.1 et au BER. Aucun rapport avec le C, mais quelle version de SNMP est la plus utilisée ? SNMPv2 ou v2c ?
Merci :)
Il faut installer le signal SIGINT (ou SIGBRK ou SIGABRT, je ne sais plus, lire la doc de signal()...), mais c'est gore.Citation:
Envoyé par Freed0
Puisque tu utilises les threads, profites en pour surveiller le clavier et à traiter des commandes simples à une ou deux caractères...
oui tu as signal avec SIGINT, et d'autres, et aussi (en tous sur *n*x pour que ça marche y compris avec des PCs, car je ne crois pas que la fonction existe sous Windows) vérifier avec poll.....
Voilà ce que j'ai sous *n*x avec tests effectués sur réseaux *n*x comprenants des pcs :
dans la routine passée à signal ( SIGINT....)Code:
1
2
3
4
5
6
7
8
9 if ( (sig == SIGKILL) || (sig == SIGTERM) || (sig == SIGQUIT) || (sig == SIGPIPE) || (sig == SIGSTOP) || (fonction_avec_poll_donne_erreur) ) { fprintf(stderr,"ONE TERMINATION SIGNAL WAS RECEIVED \n"); Appelle_Mon_End_Of_Session(2); }