NAME
listen — listen for connections on a socket
SYNOPSIS
#include <sys/socket.h>
int listen(int s, int backlog);
DESCRIPTION
To accept connections, a socket is first created using
socket(),
a queue for incoming connections is activated using
listen(),
and then connections are accepted using
accept().
listen()
applies only to unconnected sockets of type
SOCK_STREAM.
Except for AF_VME_LINK, if the socket has not been bound to a local port before
listen()
is invoked, the system automatically binds a local port
for the socket to listen on (see
inet(7F)).
For sockets in the address family
AF_CCITT and AF_VME_LINK,
the socket
must
be bound to an address by using
bind()
before connection establishment can continue, otherwise an
EADDREQUIRED
error is returned.
A listen queue is established for the socket specified by the
s
parameter, which is a socket descriptor.
backlog
defines the desirable queue length for pending connections.
The actual queue length may be greater than the specified
backlog.
If a connection request arrives
when the queue is full,
the client will receive an
ETIMEDOUT
error.
backlog
is limited to the range of 0 to
SOMAXCONN,
which is defined in
<sys/socket.h>.
SOMAXCONN
is currently set to 20.
If any other value is specified, the system automatically assigns
the closest value within the range. A
backlog
of 0 specifies only 1 pending connection is allowed at any given
time.
DEPENDENCIES
AF_CCITT:
Call-acceptance can be controlled by the
X25_CALL_ACPT_APPROVAL
ioctl()
call described in
RETURN VALUE .
Upon successful completion,
listen()
returns 0; otherwise, it returns -1 and sets
errno
to indicate the error.
ERRORS
listen()
fails if any of the following conditions are encountered:
- [EBADF]
s
is not a valid file descriptor.
- [EDESTADDRREQ]
The socket
s
has not been bound to an address by using
bind().
- [ENOTSOCK]
s
is a valid file descriptor but it is not a socket.
- [EOPNOTSUPP]
The socket referenced by
s
does not support
listen().
- [EINVAL]
The socket has been shut down or is already connected (see
socketx25(7)).
AUTHOR
listen()
was developed by the University of California, Berkeley.
FUTURE DIRECTION
The default behavior in this release is still the classic
HP-UX BSD Sockets,
however it will be changed to
X/Open Sockets
in some future release.
At that time, any
HP-UX BSD Sockets
behavior which is incompatible with
X/Open Sockets
may be obsoleted.
HP customers are advised to migrate their applications to conform
to
X/Open
specification (see
xopen_networking(7)).
MULTITHREAD USAGE
The
listen()
system call is safe to be called by multithreaded applications, and it is
thread-safe for both POSIX Threads and DCE User Threads.
It has no cancellation point.
It is async-cancel safe, async-signal safe, and fork-safe.
STANDARDS CONFORMANCE
listen(): XPG4