listen — listen for connections on a socket
#include <sys/types.h> /* See NOTES */ #include <sys/socket.h>
int
listen( |
int | sockfd, |
int | backlog) ; |
To accept connections, a socket is first created with
socket(2), a willingness to
accept incoming connections and a queue limit for incoming
connections are specified with listen
(), and then the connections are
accepted with accept(2). The listen
() call applies only to sockets of
type SOCK_STREAM
or
SOCK_SEQPACKET
.
The backlog
parameter defines the maximum length the queue of pending
connections may grow to. If a connection request arrives with
the queue full the client may receive an error with an
indication of ECONNREFUSED or,
if the underlying protocol supports retransmission, the
request may be ignored so that retries succeed.
On success, zero is returned. On error, −1 is
returned, and errno
is set
appropriately.
Another socket is already listening on the same port.
The argument sockfd
is not a valid
descriptor.
The argument sockfd
is not a
socket.
The socket is not of a type that supports the
listen
() operation.
POSIX.1-2001 does not require the inclusion of <sys/types.h>
, and this
header file is not required on Linux. However, some
historical (BSD) implementations required this header file,
and portable applications are probably wise to include
it.
The behavior of the backlog
parameter on TCP
sockets changed with Linux 2.2. Now it specifies the queue
length for completely
established
sockets waiting to be accepted, instead of the number of
incomplete connection requests. The maximum length of the
queue for incomplete sockets can be set using the tcp_max_syn_backlog
sysctl.
When syncookies are enabled there is no logical maximum
length and this sysctl setting is ignored. See tcp(7) for more
information.
If the backlog
argument is greater than the value in /proc/sys/net/somaxconn
, then it is
silently truncated to that value; the default value in this
file is 128. In kernels before 2.4.25, this limit was a hard
coded value, SOMAXCONN
, with
the value 128.
accept(2), bind(2), connect(2), socket(2)
|