Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ accept(3N) — Reliant UNIX 5.44c4

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

bind(3N)

connect(3N)

listen(3N)

socket(3N)

netconfig(4)

accept(3N)                                                       accept(3N)

NAME
     accept - accept a connection on a socket

SYNOPSIS
     #include <sys/types.h>
     #include <sys/socket.h>

     int accept(int s, struct sockaddr *addr, int *addrlen);

DESCRIPTION
     The argument s is a socket that has been created with socket(3N) and
     bound to an address with bind(3N), and that is listening for connec-
     tions after a call to listen(3N). accept() extracts the first connec-
     tion on the queue of pending connections, creates a new socket with
     the properties of s, and allocates a new file descriptor for the
     socket. If no pending connections are present on the queue and the
     socket is not marked as non-blocking, accept() blocks the caller until
     a connection is present. If the socket is marked as non-blocking and
     no pending connections are present on the queue, accept() returns an
     error as described below. accept() uses the netconfig(4) file to
     determine the STREAMS device file name associated with s. This is the
     device on which the connect indication will be accepted. The new
     socket created by accept() is used to exchange data; it is not used to
     accept more connections. The original socket (s) remains open for
     accepting further connections.

     The argument addr is a result parameter that is filled in with the
     address of the connecting entity as it is known to the communications
     layer. The exact format of the addr parameter is determined by the
     domain in which the communication occurs.

     addrlen is a value-result parameter. Initially, it contains the amount
     of space pointed to by addr; on return it contains the length in bytes
     of the address returned.

     accept() is used with connection-based socket types, currently with
     SOCKSTREAM.

     It is possible to use select(3C) to determine whether there is a con-
     nection indication for the socket, and then to perform an accept()
     call. If a "read" event is indicated, this means that a connection
     indication is pending and can be accepted with accept().

RETURN VALUE
     accept() returns -1 on error. If it succeeds, it returns a non-
     negative integer that is a descriptor for the accepted socket.









Page 1                       Reliant UNIX 5.44                Printed 11/98

accept(3N)                                                       accept(3N)

DIAGNOSTICS
     accept() will fail if:

     EBADF          The descriptor is invalid.

     ENOTSOCK       The descriptor does not reference a socket.

     EOPNOTSUPP     The referenced socket is not of type SOCKSTREAM.

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

     EPROTO         A protocol error has occurred; for example, the STREAMS
                    protocol stack has not been initialized.

     ENODEV         The protocol family and type corresponding to s could
                    not be found in the netconfig file.

     ENOMEM         There was insufficient user memory available to com-
                    plete the operation.

     ENOSR          There were insufficient STREAMS resources available to
                    complete the operation.

SEE ALSO
     bind(3N), connect(3N), listen(3N), socket(3N), netconfig(4).




























Page 2                       Reliant UNIX 5.44                Printed 11/98

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026