Ich habe eine passive Buchse, die Verbindungen wie diese hören:Warum erhalte ich keinen Fehler, wenn ich mehr Sockets verbinde als das Argument backlog, das ich höre?
t = listen(fd, 1);
fd
ist die Dateibeschreibung der zuvor erstellten Fassung.
Wie Sie sehen können und wenn ich es gut verstehe, sollte listen() in der Lage sein, nur einen eingehenden Socket in seine Warteschlange ausstehender Verbindungen zu setzen (weil sein Backlog-Argument = 1). Aber wenn ich versuche, mehrere Sockets mit dem passiven zu verbinden, bekomme ich keinen Fehler. Und ich erwarte einen ECONNREFUSED
Fehler, weil die Warteschlange voll ist.
Warum vermisse ich?
Haben Sie eine Paketerfassung durchgeführt und überprüft, ob Sie SYN-ACK vom Server erhalten? – jxh
Der Backlog-Parameter ist nur ein Hinweis, [siehe diese Antwort] (http://stackoverflow.com/questions/5111040/listen-ignores-the-backlog-argument). Das effektive Minimum für Linux scheint 16 zu sein. –
@jxh nein Ich habe es nicht überprüft, was könnte ich schlussfolgern, wenn es der Fall ist oder nicht? – Simon