Bonjour,
J'essaie de développer un petit module qui 'pingue' des équipements de manière simultanée. Je suis sous linux 2.6 - mandriva.
Pour cela je lance autant de thread que d'équipement (environ 10) et je lance dans chaque thread une même fonction ping.
Cette fonction crée une socket (sock = socket(AF_INET,SOCK_RAW,IPPROTO_ICMP);), envoi un datagramme en ayant pris soin de remplir les deux structures ( iphdr et icmphdr) pour composer le paquet, puis écoute sur son descripteur socket en utilisant la fonction select, le echo reply. Si au bout d'un timeout je n'ai rien reçu alors je considère l'équipement absent.
Mon problème est que cela ne marche pas lorsque je lance cette fonction en parallèle. Alors que tous les descripteurs de socket sont différents.
Quelqu'un peut-il m'expliquer les limitations qui conduisent à ce phénomène. Est-ce le ICMP ? Est-ce le select ? Je ne comprends pas.
Merci pour votre éclairage.
Elodie.