unixdev.net


Switch to SpeakEasy.net DSL

The Modular Manual Browser

Home Page
Manual: (OSF1-V5.1-alpha)
Page:
Section:
Apropos / Subsearch:
optional field



accept(2)							    accept(2)



NAME
  accept - Accepts a new connection on a socket

SYNOPSIS

  #include <&lt;sys/socket.h>&gt;

  int accept (
	  int socket,
	  struct sockaddr *address,
	  socklen_t *address_len );

  [XNS4.0]  The	definition of the accept() function in XNS4.0 uses a a size_t
  data type instead of socklen_t data type as specified	in XNS5.0 (the previ-
  ous definition).

  [Tru64 UNIX]	The following definition of the	accept() function does not
  conform to current standards and is supported	only for backward compatibil-
  ity (see standards(5)):

  int accept (
	  int socket,
	  struct sockaddr *address,
	  int *address_len );

STANDARDS

  Interfaces documented	on this	reference page conform to industry standards
  as follows:

  accept():  XNS5.0

  Refer	to the standards(5) reference page for more information	about indus-
  try standards	and associated tags.

PARAMETERS

  socket
      Specifies	a file descriptor for the socket that was created with the
      socket() function, has been bound	to an address with the bind() func-
      tion, and	has issued a successful	call to	the listen() function.

  address
      Points to	a sockaddr structure, the format of which is determined	by
      the domain and by	the behavior requested for the socket.	The sockaddr
      structure	is an overlay for a sockaddr_in, sockaddr_un, sockaddr_in6,
      or sockaddr_storage structure, depending on which	of the supported
      address families is active.

      [Tru64 UNIX]   If	the compile-time option	_SOCKADDR_LEN is defined
      before the sys/socket.h header file is included, the sockaddr structure
      takes 4.4BSD behavior, with a field for specifying the length of the
      socket address.  Otherwise, the default 4.3BSD sockaddr structure	is
      used, with the length of the socket address assumed to be	14 bytes or
      less.

      You can specify NULL to indicate that the	address	of the peer is not
      required.

      If _SOCKADDR_LEN is defined, the 4.3BSD sockaddr structure is defined
      with the name osockaddr.

  address_len
      Specifies	the length of the sockaddr structure pointed to	by the
      address parameter.  If the address parameter is NULL then	this parame-
      ter is ignored.

DESCRIPTION

  The accept() function	extracts the first connection on the queue of pending
  connections, creates a new socket with the same properties as	the specified
  socket, and allocates	a new file descriptor for that socket.

  If the listen() queue	is empty of connection requests, the accept() func-
  tion blocks a	calling	socket of the blocking type until a connection is
  present, or returns an [EWOULDBLOCK] for sockets marked nonblocking.

  The accepted socket cannot itself accept more	connections.  The original
  socket remains open and can accept more connections.

NOTES

  [Tru64 UNIX]	When compiled in the X/Open UNIX environment or	the POSIX.1g
  socket environment, calls to the accept() function are internally renamed
  by prepending	_E to the function name.  When you are debugging a module
  that includes	the accept() function and for which _XOPEN_SOURCE_EXTENDED or
  _POSIX_PII_SOCKET has	been defined, use _Eaccept to refer to the accept()
  call.	 See standards(5) for further information.

RETURN VALUES

  Upon successful completion, the accept() function returns the	nonnegative
  socket descriptor of the accepted socket.  Additionally, if the address
  parameter was	specified then it places the address of	the peer in the
  sockaddr structure pointed to	by the address,	and sets the address_len
  parameter to the length of address.  If the accept() function	fails, a
  value	of -1 is returned and errno is set to indicate the error.

ERRORS

  If the accept() function fails, errno	may be set to one of the following
  values:

  [EBADF]   The	socket parameter is not	valid.

  [ECONNABORTED]
	    A connection has been aborted.

  [EFAULT]  The	address	parameter or address_len parameter is inaccessible or
	    cannot be written.

  [EINTR]   The	accept() function was interrupted by a signal that was caught
	    before a valid connection arrived.

  [EINVAL]  The	socket is not accepting	connections.

  [EMFILE]  There are too many open file descriptors.

  [ENFILE]  The	maximum	number of file descriptors in the system are already
	    open.

  [ENOBUFS] Insufficient resources are available in the	system to complete
	    the	call.

  [ENOMEM]  The	system was unable to allocate kernel memory to increase	the
	    process descriptor table.

  [ENOSR]   The	available STREAMS resources were insufficient for the opera-
	    tion to complete.

  [ENOTSOCK]
	    The	socket parameter refers	to a file, not a socket.

  [EOPNOTSUPP]
	    The	referenced socket cannot accept	connections.

  [EPROTO]  A protocol error occurred.

  [EWOULDBLOCK]
	    The	socket is marked nonblocking, and no connections are present
	    to be accepted.

RELATED	INFORMATION

  Functions: bind(2), connect(2), listen(2), socket(2).

  Standards: standards(5).