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)