J'ai remarqué que lorsque j'envoie des paquets à intervalles réguliers à partir d'une socket udp, le premier paquet envoyé semble être retardé. Par exemple, si j'envoie les paquets toutes les 100 ms, je trouve le délai entre la réception des paquets à distribuer normalement avec une moyenne de 100 ms et l'écart type moyen de 4, sur mon réseau. Cependant, l'écart entre le temps de réception du premier et du second paquet est généralement de 10 à 40 ms - comme vous pouvez le voir, il s'agit clairement d'une différence statistiquement significative, et ma question est la suivante: quelle en est la cause? J'utilise la fonction sendto de C sous Linux. Quelqu'un a suggéré que le retard pourrait être provoqué par la résolution d'arp empêchant le paquet d'être envoyé jusqu'à ce que l'IP de destination ait été convertie en adresse mac - est-ce probable? Si je redémarre le programme d'envoi, le premier paquet prend encore trop de temps, et le retard est incohérent - 10 à 40 ms est une assez grande plage.Quelles sont les causes du retard de réception udp?
J'ai besoin de savoir pourquoi ce premier paquet prend trop de temps et comment contourner ce problème. Editer: Une analyse plus poussée avec pcap indique que le programme émetteur envoie les paquets au bon intervalle. Le problème doit être avec le récepteur qui utilise select() pour attendre une socket lisible, puis appelle recvfrom et imprime le paquet. Y a-t-il une sorte de mise en mémoire tampon que je ne connais peut-être pas?
Vous pouvez utiliser un renifleur pour vérifier si quelque chose en relation avec votre ordinateur est lié à la transmission du paquet. –
Hé, est-ce que qui que ce soit qui est downvoted s'il vous plait, pourquoi? – Benubird