ACCEPT(two) BSD Process 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,
win 7 starter 32 bit key,
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(two),
cheap office Enterprise 2007, and is listening for connections after
a listen(2). The accept() product call extracts the
first connection request on the queue of pending
connections,
office 2010 key, creates a new socket,
genuine office 2010 key, 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,
microsoft windows 7 enterprise key, 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(2) 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() process 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 process file
table is full. [ENOTSOCK] The descriptor
references a file, not a socket. [EINVAL] listen(2) 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(two),
getpeername(2), getsockname(two), listen(two), select(two),
socket(2), accept_filter(9) HISTORY The accept() method call
appeared in 4.2BSD. BSD
December 11, 1993 BSD COMMENTS