Limitation des réponses d’écho ICMP lors de la création d’un programme PING

J’écrivais un programme de ping multithread. J’ai créé rawsockets sur chaque thread (pour chaque adresse IP) et envoyé une demande d’écho ICMP à chacun à l’aide de sendto (), puis j’ai fait recvfrom () dans chaque thread. Je reçois des messages d’IP dans différents sockets (comme si j’avais utilisé le socket S1 pour sendto pour IP1, les réponses d’écho de IP1 à S1, S2, etc.). Dois-je faire un lien?

Un autre problème est que même si je n’envoie qu’une seule requête ICMP, je récupère de nombreuses réponses en écho de la cible. Est-il possible de limiter cela? Cela me fait manquer certains des autres paquets ICMP. Mon programme peut-il demander à la cible de cesser d’envoyer des échos ICMP?

Merci,

Les sockets bruts ramassent tous les paquets entrants; vous devrez faire votre propre filtrage ou – mieux encore – n’ouvrir qu’un seul socket brut et détecter toutes les réponses d’écho entrantes sur un seul thread.

Vos paquets en double peuvent être dus aux multiples sockets brutes – vous obtiendrez une copie de chaque paquet entrant par socket . Notez également que dans certains cas, les paquets Internet peuvent être dupliqués (ceci est rare, cependant).