Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ accept(2) — HP-UX 5.20

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

bind(2)

connect(2)

listen(2)

select(2)

socket(2)

     ACCEPT(2)                Series 300 Only                ACCEPT(2)

     NAME
          accept - accept a connection on a socket

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

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

     HP-UX/COMPATIBILITY
          Level:    HP-UX/NON-STANDARD

          Origin:   UCB

          Remarks:  Implemented on the Series 300 only.

     DESCRIPTION
          The argument s is a socket descriptor which has been created
          with  socket(2),  bound  to  an address with bind(2), and is
          listening  for  connections  after  a   listen(2).    Accept
          extracts  the  first  connection  on  the  queue  of pending
          connections, creates a new socket with the  same  properties
          of  s  and  allocates  a  new  file  descriptor, ns, 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  non-blocking  and no pending connections are present
          on the queue, accept returns an error  as  described  below.
          The  accepted  socket,  ns,  may  not be used to accept more
          connections.  The original socket s remains open.

          The argument addr must  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  addrlen  is  a pointer to an int; it should
          initially contain the size of the structure  pointed  to  by
          addr; on return it will contain 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 will be  returned.   This
          call  is  used  with  connection-based  socket  types,  i.e.
          SOCK_STREAM.

          It is possible to determine when a listening socket is ready
          for an accept call by using select(2) for reading.

          The accept call will fail if:

          [EBADF]             The descriptor is invalid.

     Hewlett-Packard               - 1 -             (printed 7/16/86)

     ACCEPT(2)                Series 300 Only                ACCEPT(2)

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

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

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

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

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

          [ENET]              A hardware  error  is  detected  on  the
                              interface card.

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

          [ENOBUFS]           No  buffer  space  is  available.    The
                              accept can not complete.

          [EINVAL]            The socket is not currently listening or
                              has  been  shutdown.   A  listen must be
                              done before an accept is allowed.

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

     RETURN VALUE
          The call returns -1 on error.  If it succeeds it  returns  a
          non-negative  integer which is a descriptor for the accepted
          socket.

     SEE ALSO
          bind(2), connect(2), listen(2), select(2), socket(2)

     HARDWARE DEPENDENCIES
          Series 300:
               The  EOPNOTSUPP  error  is   not   returned   by   this
               implementation.

     Hewlett-Packard               - 2 -             (printed 7/16/86)

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