ACCEPT(2) BSD Model Calls Manual ACCEPT(2) Name accept — accept a
connection on a socket LIBRARY Standard C Library (libc,
−lc) SYNOPSIS #include <systypes.h>
#include <syssocket.h> int accept(int s,
struct sockaddr * restrict addr,
socklen_t * restrict addrlen); DESCRIPTION The argument s is a
socket that has been created with socket(2), bound to an
address with bind(2), and is listening for connections after
a listen(two). The accept() program call extracts the
first connection request on the queue of pending
connections,
Microsoft Office 2010 Pro Plus, creates a new socket, and allocates a new file
descriptor for the socket which inherits the state of the
O_NONBLOCK property from the original socket s. If no pending
connections are present on the queue, and the original
socket is not marked as non-blocking, accept() blocks
the caller until a connection is present. If the original
socket is marked non-blocking and no pending connections are
present on the queue, accept() returns an error as
described below. The accepted socket may not be used to
accept more connections. The original socket s
remains open. The argument
addr is a result argument that is filled-in with the
address of the connecting entity, as known to the
communications layer. The exact format of the addr
argument is determined by the domain in which the
communication is occurring. A null pointer may be specified
for addr if the address information is not desired;
in this case, addrlen is not used and should also be
null. Otherwise, the addrlen argument is a
value-result argument; it should initially contain the
amount of space pointed to by addr; on return it will
contain the actual length (in bytes) of the address
returned. This call is used with connection-based socket
types, currently with SOCK_STREAM. It is possible
to select(two) a socket for the purposes of doing an
accept() by selecting it for read. For certain
protocols which require an explicit confirmation, such as
ISO or DATAKIT, accept() can be thought of as merely
dequeueing the next connection request and not implying
confirmation. Confirmation can be implied by a normal read
or write on the new file descriptor, and rejection can be
implied by closing the new socket. For some
applications, performance may be enhanced by using an
accept_filter(9) to pre-process incoming connections. RETURN VALUES The call returns −1 on
error. If it succeeds, it returns a non-negative integer
that is a descriptor for the accepted socket. ERRORS The accept() strategy call
will fail if: [EBADF] The descriptor
is invalid. [EINTR] The
accept() operation was interrupted. [EMFILE] The per-process
descriptor table is full. [ENFILE] The system file
table is full. [ENOTSOCK] The descriptor
references a file,
Microsoft Office Pro Plus 2010, not a socket. [EINVAL] listen(two) has
not been called on the socket descriptor. [EINVAL] The
addrlen argument is negative. [EFAULT] The addr
argument is not in a writable part of the user address
space. [EWOULDBLOCK] The socket is
marked non-blocking and no connections are present to be
accepted. [ECONNABORTED] A connection
arrived, but it was closed while waiting on the listen
queue. SEE ALSO bind(two), connect(2),
getpeername(two),
Microsoft Office Home And Student 2010 Product Key, getsockname(2),
Windows 7 Pro Serial Key, listen(two), select(two),
Windows 7 64 Bit Key,
socket(2), accept_filter(9) HISTORY The accept() model call
appeared in 4.2BSD. BSD
December 11, 1993 BSD COMMENTS