Question

Comment dois-je déterminer ce qu'il faut utiliser pour le paramètre de backlog d'un socket en écoute? Est-ce un problème de simplement spécifier un très grand nombre?

Était-ce utile?

La solution

Extrait du docs :

  

Une valeur pour le backlog de SOMAXCONN est une constante spéciale qui indique au fournisseur de service sous-jacent responsable du socket s de définir la longueur de la file d'attente des connexions en attente sur une valeur raisonnable maximale.

Autres conseils

La FAQ de Winsock Programmer contient une très longue réponse à cette question. Il détaille le paramètre standard et la fonctionnalité de backlog dynamique ajoutée dans un correctif pour NT 4.0.

J'appuie en second sur SOMAXCONN, sauf si vous avez une raison spécifique d'utiliser une file d'attente trop courte.

N'oubliez pas que s'il n'y a pas de place dans la file d'attente pour une nouvelle connexion, aucune RST n'est envoyée, ce qui permet au client de continuer automatiquement à essayer de se connecter en retransmettant SYN.

De plus, l'argument de traitement en retard peut avoir différentes significations dans différentes implémentations de socket.

  • Dans la plupart des cas, cela signifie la taille de la file d'attente de connexion semi-ouverte, dans certains cas, la taille de la file d'attente de connexion terminée.
  • Dans de nombreuses implémentations, l'argument de traitement en attente sera multiplié pour produire une longueur de file d'attente différente.
  • Si une valeur spécifiée est trop grande, toutes les implémentations vont de toute façon la tronquer de manière silencieuse à la longueur maximale de la file d'attente.

En guise d'avertissement à toute personne utilisant boost asio, la valeur SOMAXCONN est utilisée sous la forme 5 avec boost.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top