NAME
accept - Accepts a new connection on a socket
SYNOPSIS
#include <sys/types.h>
#include <sys/socket.h>
int accept (
int socket,
struct sockaddr *address,
int *address_len );
PARAMETERS
socket
Specifies a socket that was created with the socket()
function, has been bound to an address with the bind()
function, and has issued a successful call to the
listen() function.
address
Points to a sockaddr structure, the format of which is
determined by the domain and by the behavior requested
for the socket. The sockaddr structure is an overlay
for a sockaddr_in, sockaddr_un, or sockaddr_ns struc-
ture, depending on which of the supported address fami-
lies is active. If the compile-time option
_SOCKADDR_LEN is defined before the sys/socket.h header
file is included, the sockaddr structure takes 4.4BSD
behavior, with a field for specifying the length of the
socket address. Otherwise, the default 4.3BSD sockaddr
structure is used, with the length of the socket
address assumed to be 14 bytes or less.
If _SOCKADDR_LEN is defined, the 4.3BSD sockaddr struc-
ture is defined with the name osockaddr.
address_len
Specifies the length of the sockaddr structure pointed
to by the address parameter.
DESCRIPTION
The accept() function extracts the first connection on the
queue of pending connections, creates a new socket with the
same properties as the specified socket, and allocates a new
file descriptor for that socket.
If the listen() queue is empty of connection requests, the
accept() function blocks a calling socket of the blocking
type until a connection is present, or returns an [EWOULD-
BLOCK] for sockets marked nonblocking.
The accepted socket cannot itself accept more connections.
The original socket remains open and can accept more connec-
tions.
RETURN VALUES
Upon successful completion, the accept() function returns
the nonnegative socket descriptor of the accepted socket,
places the address of the peer in the sockaddr structure
pointed to by the address parameter, and sets the
address_len parameter to the length of address. If the
accept() function fails, a value of -1 is returned and errno
is set to indicate the error.
ERRORS
If the accept() function fails, errno may be set to one of
the following values:
[EINVAL] The socket is not accepting connections.
[EBADF] The socket parameter is not valid.
[ENOTSOCK]
The socket parameter refers to a file, not a
socket.
[EOPNOTSUPP]
The referenced socket can not accept connections.
[EFAULT] The address parameter is not in a writable part of
the user address space.
[EWOULDBLOCK]
The socket is marked nonblocking, and no connec-
tions are present to be accepted.
[EMFILE] There are too many open file descriptors.
RELATED INFORMATION
Functions: bind(2), connect(2), listen(2), socket(2)
Acknowledgement and Disclaimer