HPUX accept[2]



accept in anderen Kapiteln des hpux Handbuch: accept.1m




 accept(2)                                                         accept(2)





 NAME
      accept - accept a connection on a socket

 SYNOPSIS
      #include <sys/socket.h>

    AF_CCITT only:
      #include <x25/x25addrstr.h>

      int accept(int s, void *addr, int *addrlen);

 DESCRIPTION
      accept() is used with connection-based socket types, such as
      SOCK_STREAM.  Argument s is a socket descriptor created using
      socket(), bound to an address by bind(), and listening for connections
      after a listen().  accept() extracts the first connection on the queue
      of pending connections, creates a new socket with the same properties
      as s, and allocates a new file descriptor, ns, for the socket.  If no
      pending connections are present on the queue and non-blocking mode has
      not been enabled using the O_NONBLOCK or O_NDELAY fcntl() flags or the
      FIOSNBIO ioctl() request, accept() blocks the caller until a
      connection is present.  (O_NONBLOCK and O_NDELAY are defined in
      <sys/fcntl.h>; see fcntl(2) fcntl(5), and socket(7).  FIOSNBIO and the
      equivalent request FIONBIO are defined in <sys/ioctl.h>, although use
      of FIONBIO is not recommended; see ioctl(2), ioctl(5), and socket(7).)
      If the socket is marked non-blocking and no pending connections are
      present on the queue, accept() returns an error as described below.
      The accepted socket, ns, cannot be used to accept more connections.
      The original socket s remains open.  It is possible to determine
      whether a listening socket has pending connection requests ready for
      an accept() call by using select() for reading.

      The argument addr should point to a local socket address structure.
      The accept() call fills in this structure with the address of the
      connecting entity, as known to the underlying protocol.  The format of
      the address depends upon the protocol and the address-family of the
      socket s.  addrlen is a pointer to an int; it should initially contain
      the size of the structure pointed to by addr.  On return, it contains
      the actual length (in bytes) of the address returned.  If the memory
      pointed to by addr is not large enough to contain the entire address,
      only the first addrlen bytes of the address are returned.

      Since both the fcntl() O_NONBLOCK flag and FIOSNBIO ioctl() request
      are supported, some clarification on how these features interact is
      necessary.  If the O_NONBLOCK flag has been set, accept() requests
      behave accordingly, regardless of any FIOSNBIO requests.  If the
      O_NONBLOCK flag has not been set, FIOSNBIO requests control the
      behavior of accept().  AF_CCITT only: The addr parameter to accept()
      returns addressing information for the connecting entity, except for
      the x25ifname[] field of addr which contains the name of the local
      X.25 interface through which the connection request arrived.  Call-



 Hewlett-Packard Company            - 1 -     HP-UX Release 9.0: August 1992






 accept(2)                                                         accept(2)





      acceptance can be controlled with the X25_CALL_ACPT_APPROVAL ioctl()
      call described in socketx25(7).

 RETURN VALUE
      Upon successful competion, accept() returns a non-negative integer
      which is a descriptor for the accepted socket.  If an error occurs,
      accept() returns -1 and sets errno to indicate the cause.

 DIAGNOSTICS
      accept() fails if any of the following conditions are encountered:

           [EBADF]                  The file descriptor s is invalid.

           [ENOTSOCK]               The file descriptor s references a file,
                                    not a socket.

           [EOPNOTSUPP]             The socket referenced by s is not of
                                    type SOCK_STREAM.

           [EFAULT]                 The addr parameter is not in a valid
                                    pointer.

           [EWOULDBLOCK]            Non-blocking I/O is enabled using
                                    O_NDELAY or FIOSNBIO and no connections
                                    are present to be accepted.

           [EMFILE]                 The maximum number of file descriptors
                                    for this process are already currently
                                    open.

           [ENFILE]                 The system's table of open files is full
                                    and no more accepts can be accepted at
                                    this time.

           [ENOBUFS]                No buffer space is available.  The
                                    accept() cannot complete.  The queued
                                    socket connect request is aborted.

           [EINVAL]                 The socket referenced by s is not
                                    currently a listen socket or has been
                                    shutdown().  A listen() must be done
                                    before an accept() is allowed.

           [EAGAIN]                 Non-blocking I/O is enabled using
                                    O_NONBLOCK and no connections are
                                    present to be accepted.

           [EINTR]                  The call was interrupted by a signal
                                    before a valid connection arrived.





 Hewlett-Packard Company            - 2 -     HP-UX Release 9.0: August 1992






 accept(2)                                                         accept(2)





 AUTHOR
      accept() was developed by the University of California, Berkeley.

 SEE ALSO
      bind(2), connect(2), listen(2), select(2), socket(2) socketx25(7).

















































 Hewlett-Packard Company            - 3 -     HP-UX Release 9.0: August 1992