Welchen Wert des Rückstands sollte ich verwenden?

Ich lese dasMann 2 hören.

Ich verstehe nicht, was der Rückstandswert ist, heißt es

Das Argument backlog definiert die maximale Länge, bis zu der die Warteschlange ausstehender Verbindungen für sockfd anwachsen kann

Richtig, wie kann ich den besten Wert definieren?

Vielen Dank

 caf04. Apr. 2012, 05:25

Antworten auf die Frage(2)

Lösung für das Problem

listen() Rückstau betrifft, wie viele eingehende Verbindungen in die Warteschlange gestellt werden können, wenn Ihre Anwendung nicht in der Warteschlange stehtaccept()Verbindungen herzustellen, sobald sie eingehen. Für die meisten Anwendungen ist dies nicht besonders wichtig. Der maximale Wert, der von den meisten Systemen verwendet wird, ist 128 und das Übergeben ist im Allgemeinen sicher.

 mathieug04. Apr. 2012, 01:57
Okay, wenn ichlisten(sockfd, 5)soll ich in meinem testenaccept() (in meiner Endlosschleife) ifcurrent_nb_client < 5 Um eine Fehlermeldung an meinen Client zu senden, oder kann ich dem Backlog vertrauen und dies clientseitig verarbeiten?
 mathieug04. Apr. 2012, 03:04
Oh, ich habe es einfach verstanden! Ich dachte, sie verschwinden nicht aus der Warteschlange. Aber nein! Es ist eine ausstehende Warteschlange, und ich muss nuraccept() jeder und sie verschwinden aus der Warteschlange.
 duskwuff04. Apr. 2012, 02:26
Nein, das ist nicht erforderlich. Solange Sie Verbindungen annehmen, sobald sie eingehen, spielt die Länge Ihres Listen-Backlogs keine Rolle. Sie können so viele habenaktiv Verbindungen nach Bedarf; Das Listen-Backlog betrifft nur Verbindungen, die noch nicht vollständig hergestellt wurden.

Es ist ein Kampf zwischen Kunden, die versuchen, eine Verbindung herzustellen. Übertragen von Accept-Anforderungen in die Warteschlange und Absaugen der Accept-Threads. Normalerweise gewinnen die Threads. Ich setze normalerweise auf 32, aber es ist normalerweise kein wichtiger Parameter.

 mathieug04. Apr. 2012, 12:19
Ich verstehe, danke!
 Martin James04. Apr. 2012, 09:38
Der Verbindungsversuch wird abgelehnt, wenn die Warteschlange voll ist, aber es ist nur so unwahrscheinlich, dass Sie es vergessen sollten. Es muss eine gewisse Warteschlange geben, um die Zeiten abzudecken, in denen viele Verbindungsanfragen in einem Burst eingehen, aber die heutigen Prozessoren / Speicher / Betriebssysteme / was auch immer können mit ausgelasteten Netzwerken problemlos mithalten.
 mathieug04. Apr. 2012, 01:57
Okay, wenn ichlisten(sockfd, 5)soll ich in meinem testenaccept() (in meiner Endlosschleife) ifcurrent_nb_client < 5 Um eine Fehlermeldung an meinen Client zu senden, oder kann ich dem Backlog vertrauen und dies clientseitig verarbeiten?

Ihre Antwort auf die Frage