Si recvmsg() d'un socket C contient une file d'attente, comment puis-je savoir combien d'éléments sont en attente dans la file d'attente?En C, pour un socket, recvmsg() a-t-il une file d'attente?
Mon problème est que la vitesse du code après avoir reçu quelque chose de recvmsg() est parfois plus lente que le taux de données envoyées à recvmsg(), ce qui entraînerait logiquement une file d'attente? Que se passe-t-il si la file d'attente devient trop grande?
Par exemple, si ceci est mon recv() Code:
while (recvmsg(SocketA,...) > 0)
{
...
...something that takes 1.5 seconds to execute/complete...
...
}
et si la fonction suivante un autre endroit est appelé chaque 1 seconde:
// gets called every 1 second
int send_to_sock()
{
...
send(SocketA, ...);
...
}
J'ai vérifié les pages de référence pour recvmsg () mais aucun d'entre eux ne mentionne quoi que ce soit au sujet d'une file d'attente, mais il semble qu'il y ait une file d'attente parce que j'observe des retards qui s'ajoutent progressivement. Mais le code cesse de fonctionner si la file d'attente devient trop longue, donc je veux savoir s'il existe un moyen de vérifier la longueur de la file d'attente.
Pourquoi avez-vous une définition de fonction pour 'recv'? Normalement, 'recv' est défini par le système d'exploitation ... –
Les sockets ont des tampons. Si c'est de cela que vous parlez, c'est probablement intéressant: http://stackoverflow.com/questions/7865069/how-to-find-the-socket-buffer-size-of-linux –
répartis dans l'espace et le temps entre vous et le pair. Il est placé dans le serveur, le client et les routeurs intermédiaires. Il est en route le long des fibres sous-marines et dans l'espace libre entre les stations au sol et les satellites. Il y a des données là-bas, mais vous ne savez pas où c'est ou combien. – ThingyWotsit