Bonjour,
voici mon problème :
je mets 2 ordis en réseau wifi ad hoc avec une adresse IP pour chacun et je les fais "pinger".
J'obtiens un résultat de 0% d'erreurs sur des tests d'environ un millier de ping.
Parfait.
Maintenant, je mets toujours ces 2 ordis en réseau ad hoc,
j'utilise une interface réseau virtuelle sur chacun des ordis
et je récupère le "ping" qui sort de cette interface virtuelle.
J'envoie ce "ping" vers le deuxième ordi par l'intermédiaire de "raw socket".
Ce deuxième ordi répondra "pong" par le même mécanisme.
Cela fonctionne "presque bien" puisque j'obtiens 3% d'erreurs.
Ces erreurs proviennent du fait qu'un des 2 ordis n'a pas reçu le "ping" (ou le "pong") que lui a envoyé l'autre.
Seulement, je ne comprends pas, étant donné que la liaison est excellente (je rappelle qu'en ne passant pas par les "raw socket", j'obtiens 0% d'erreur).
Ces erreurs ont l'air de se produire aléatoirement.
Avec Wireshark, j'ai vérifié que le "ping" est bien envoyé par l'intermédiaire de sendto() mais il n'est pas reçu par recvfrom().
Cette trame envoyée a bien la longueur attendue et la fonction sendto() ne renvoie pas d'erreurs.
J'ai également vérifié à l'aide de l'outil "strace" que les fonctions sendto() et recvfrom() sont belles et bien appelées.
Le problème se situe donc entre le moment où j'appelle le sendto() de l'émetteur et le recvfrom() du récepteur qui ne reçoit rien.
Il n'y a aucun message d'erreur affiché, tout ce passe comme si le récepteur n'avait jamais vu le paquet arriver.
Quelqun pourrait-il m'aider ?
Merci
Partager