Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ accept(2) — HP-UX 6.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 and 800 Only

NAME

accept − accept a connection on a socket

SYNOPSIS

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

ns = accept(s, addr, addrlen)
int ns;
int s;
struct sockaddr *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(2), bound to an address with bind(2), and 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 as 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, cannot be used to accept more connections. The original socket s remains open. 

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 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. 

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

RETURN VALUE

The call returns −1 on error. If successful, it returns a non-negative integer, which is a descriptor for the accepted socket. 

DIAGNOSTICS

The accept call fails if:

[EBADF] The file descriptor s is invalid. 

[ENOTSOCK] The file descriptor s 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. 

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

[ENOBUFS] No buffer space is available.  The accept can not complete.  The queued socket connect request is aborted. 

[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. 

AUTHOR

UCB (University of California at Berkeley)

SEE ALSO

bind(2), connect(2), listen(2), select(2), socket(2). 

Hewlett-Packard Company  —  May 11, 2021

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