listen (7) ( Linux man: Макропакеты и соглашения )
- listen for connections on a socket
#include <sys/socket.h> int
listen (int s int backlog);
To accept connections, a socket
is first created with
a willingness to accept incoming connections and
a queue limit for incoming connections are specified with
and then the connections are
system call applies only to sockets of type
argument defines the maximum length the queue of
pending connections may grow to.
The real maximum queue length will be 1.5 times more than the value
specified in the
system call on the listening socket allows the caller to change the maximum
queue length using a new
If a connection
request arrives with the queue full the client may
receive an error with an indication of
Er ECONNREFUSED ,
or, in the case of TCP, the connection will be
Current queue lengths of listening sockets can be queried using
Note that before
and the introduction of the syncache,
argument also determined the length of the incomplete
connection queue, which held TCP sockets in the process
of completing TCP's 3-way handshake.
These incomplete connections
are now held entirely in the syncache, which is unaffected by
values to help handle denial
of service attacks are no longer necessary.
specifies a hard limit on
Fa backlog ;
if a value greater than
or less than zero is specified,
is silently forced to
INTERACTION WITH ACCEPT FILTERS
When accept filtering is used on a socket, a second queue will
be used to hold sockets that have connected, but have not yet
met their accept filtering criteria.
Once the criteria has been
met, these sockets will be moved over into the completed connection
queue to be
If this secondary queue is full and a
new connection comes in, the oldest socket which has not yet met
its accept filter criteria will be terminated.
This secondary queue, like the primary listen queue, is sized
according to the
Rv -std listen
will fail if:
Bq Er EBADF
is not a valid descriptor.
Bq Er EINVAL
The socket is already connected, or in the process of being connected.
Bq Er ENOTSOCK
is not a socket.
Bq Er EOPNOTSUPP
The socket is not of a type that supports the operation
system call appeared in
The ability to configure the maximum
at run-time, and to use a negative
to request the maximum allowable value, was introduced in
Fx 2.2 .