| 
 | 
  | 
 
  
  C Interface
  
 AF_UNIX only:
   #include <sys/types.h>
   #include <sys/socket.h>
   #include <sys/un.h>
   int ns;
   ns = accept (s, addr, addrlen)
   int s;
   struct sockaddr_un *addr;
   int *addrlen;
 AF_INET only:
   #include <sys/types.h>
   #include <sys/socket.h>
   #include <netinet/in.h>
   int ns;
   ns = accept (s, addr, addrlen)
   int s;
   struct sockaddr_in *addr;
   int *addrlen;
   
  Description
  This call is used with connection-based socket types, such as
  SOCK_STREAM. The argument s is a socket descriptor
  created with socket, bound to an address with bind, and
  listening for connections after a listen. If pending connections are
  present on the queue, the accept call extracts the first connection
  on the queue, creates a new socket, and allocates a new file descriptor,
  ns, for the socket. If no pending connections are present on
  the queue and non-blocking mode has been enabled using the O_NONBLOCK or
  O_NDELAY fcntl flags (refer to fcntl section), accept
  returns an error as described in the Errors section below. If no pending
  connections are present on the queue and non-blocking mode has not been
  enabled, accept blocks the caller until a connection is present. The
  accepted socket, ns, cannot be used to accept more connections.
  The original socket s remains open. It is possible to
  determine if 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. The addrlen is a pointer to 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.
    
  AF_UNIX only: The addr parameter to accept() 
  is ignored.
  Return Value
  If the call is successful, a non-negative integer is returned, which is a
  descriptor for the accepted socket. If the call fails, a -1 is returned and an
  error code is stored in errno.
  Errors
  The following errors are returned by accept:
    
  
  
  | Error Code | 
  Description |  
  
  
    | [EHOSTDOWN] | 
    The networking subsystem has not been started or has been
        stopped. |  
  
    | [EBADF] | 
    The file descriptor s is invalid. |  
  
    | [ENOTSOCK] | 
    The argument 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 a valid pointer. |  
  
    | [EWOULDBLOCK] | 
    Non-blocking I/O is enabled using O_NDELAY, 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 accept
        calls can be accepted, temporarily. |  
  
    | [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 it has been shut down. A listen must be done before
        an accept is allowed. This is also returned if the length is
        less than zero. |  
  
    | [EINTR] | 
    The call was interrupted by a signal before a valid connection
        arrived. |  
  
    | [EAGAIN] | 
    Non-blocking I/O is enabled using O_NONBLOCK, and no
        connections are present to be accepted. |  
  
   
  
  MPE/iX Specific
  Connections are completely established in the accept call. The
  addr returned from accept when a connection is made
  in loopback is the loopback address (127.0.0.1). On HP-UX, the local host's IP
  address would be returned in this case.
  Author
  UCB (University of California at Berkeley)
  See Also
  
  bind,
  connect,
  listen,
  select, 
  socket
  
  
 
 |