Listen/Backlog unter Linux
-
Hab folgendes Problem.
Das listen(socker,backlog) ändert nichts an der anzahl der clients die sich in der queue befinden dürfen.
bei einem listen(socket,1) sollte nur 1 Client akzeptiert und alle folgenden abgelehnt werden. Dies ist allerdings nicht der Fall. Es können sich bis zu 128 Clients connecten, unabhängig von dem wert den ich bei listen als backlog setzte.
was kann ich da machen ?
mfg
-
Die Clients akzeptiert doch nicht listen, sondern Du selbst, mit accept.
Mach nur einmal accept, dann kann sich auch nur ein Client connecten. Das Backlog hat damit nichts zu tun, das bestimmt wie viele Clienten sich in einer Queue befinden dürfen während Du NICHT acceptest.
-
Genau darum gehts ... ich will keine Clients in der queue. Die Application ist zeitkritisch. Wenn der Server für einen Client keine Zeit hat muss dieses sofort abgelehnt werden.
-
Dann setz' doch die Queue auf 0 zurück, während du beschäftigt bist
Nochmal klar: Sobald du accept() aufrufst, wird der erste Client in der Warteschleife an dich weitergereicht - und dann kann wieder ein neuer Client sich in der Warteschleife einreihen.
-
Ich vermute dann musst Du nach dem Accept den Listening Socket schliessen oder per sysctl (siehe man 2 listen - ich selbst hab sowas noch nie gebraucht) die Queue (Backlog) auf 0 setzen.
-
Hab ich schon probiert ... das Problem ist ... unabhängig auf welchen Wert ich die Queue stelle, es können sich immer 128 Clients in ihr befinden ... mit queue mein ich den backlog, listen(socket,backlog) ... Wennst ne andere möglichkeit weißt die queue zu ändern bitte sagen
-
Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum Linux/Unix verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.