Domanda

Come devo determinare cosa usare per il parametro backlog di un socket di ascolto? È un problema semplicemente specificare un numero molto grande?

È stato utile?

Soluzione

Dai docs :

  

Un valore per l'arretrato di SOMAXCONN è una costante speciale che indica al fornitore di servizi sottostante responsabile dei socket di impostare la lunghezza della coda delle connessioni in sospeso su un valore massimo ragionevole.

Altri suggerimenti

C'è una risposta molto lunga a questo nelle FAQ del programmatore di Winsock . Descrive in dettaglio l'impostazione standard e la funzionalità di backlog dinamico aggiunta in un aggiornamento rapido a NT 4.0.

In secondo luogo uso SOMAXCONN, a meno che tu non abbia un motivo specifico per utilizzare una breve coda.

Tieni presente che se non c'è spazio nella coda per una nuova connessione, non verrà inviato nessun RST, consentendo al client di continuare automaticamente a provare a connettersi ritrasmettendo SYN.

Inoltre, l'argomento backlog può avere significati diversi in diverse implementazioni socket.

  • Nella maggior parte dei casi indica la dimensione della coda di connessione semiaperta, in alcuni significa la dimensione della coda di connessione completata.
  • In molte implementazioni, l'argomento backlog verrà moltiplicato per produrre una lunghezza della coda diversa.
  • Se viene specificato un valore troppo grande, tutte le implementazioni troncano automaticamente il valore alla massima lunghezza della coda.

Come avvertimento per chiunque utilizzi boost asio, il valore SOMAXCONN viene usato come 5 con boost.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top