COHERENT manpages

This page displays the COHERENT manpage for accept() [Accept a connection on a socket].

List of available manpages
Index


accept() -- Sockets Function (libsocket)

Accept a connection on a socket
#include <sys/types.h>
#include <sys/socket.h>
int accept(socket, address, addrlen)
int socket, *addrlen; struct sockaddr *address;

accept()  accepts  a  connection  on  a  socket.   It  extracts  the  first
connection  request on  the  queue of  pending connections,  creates a  new
socket with the same properties  as socket, and allocates a file descriptor
for the  newly created socket.   It is used with  connection-based types of
sockets, currently with SOCK_STREAM.

socket gives a file descriptor that identifies a socket.  It must have been
returned by a call to socket(),  have been bound to an address by a call to
bind(), and be listening for connections after a call to listen().

If no connections are pending on the queue and socket is not marked as non-
blocking,  accept() blocks  the calling  process until  it can  establish a
connection.   If  socket  is marked  non-blocking  and  no connections  are
pending on  the queue, accept() returns an error,  as described below.  The
accepted socket  may not be  used to accept more  connections; however, the
original socket remains open.

address  gives  the address  of  the  connecting entity,  as  known to  the
``communications layer''.   Its exact format  is dictated by  the domain in
which communication occurs.

addrlen points  to an integer that  gives the number of  bytes available at
address. Upon  return, that integer  contains the number of  bytes to which
address actually points.

The  function select()  can  perform the  same action  as accept():  simply
select the socket for reading.

If all  goes well,  accept() returns the  file descriptor for  the accepted
socket, which is a non-negative integer.  If something goes wrong, accept()
returns -1 and set errno to  an appropriate value.  The following lists the
errors that can occur, by the value to which accept() sets errno:

EBADF
     socket is somehow invalid.

ENOTSOCK
     socket references a file, not a socket.

EOPNOTSUPP
     socket references a socket that is not of type SOCK_STREAM.

EFAULT
     addr contains an illegal address.

EWOULDBLOCK
     The socket  is marked non-blocking, and no  connections are present to
     be accepted.

Example

For an example of this function, see the Lexicon entry for libsocket.

See Also

bind(),
connect(),
libsocket,
listen(),
select()