4.3BSD-Reno/share/man/cat2/accept.0

Compare this file to the similar file:
Show the results in this format:




ACCEPT(2)		      1990			ACCEPT(2)



NNAAMMEE
     accept - accept a connection on a socket

SSYYNNOOPPSSIISS
     ##iinncclluuddee <<ssyyss//ttyyppeess..hh>>
     ##iinncclluuddee <<ssyyss//ssoocckkeett..hh>>

     nnss == aacccceepptt((ss,, aaddddrr,, aaddddrrlleenn))
     iinntt nnss,, ss;;
     ssttrruucctt ssoocckkaaddddrr **aaddddrr;;
     iinntt **aaddddrrlleenn;;

DDEESSCCRRIIPPTTIIOONN
     The argument _s is a socket that has been created with
     _s_o_c_k_e_t(2), bound to an address with _b_i_n_d(2), and is listen-
     ing for connections after a _l_i_s_t_e_n(2).  _A_c_c_e_p_t extracts the
     first connection request on the queue of pending connec-
     tions, creates a new socket with the same properties of _s
     and allocates a new file descriptor, _n_s, for the socket.  If
     no pending connections are present on the queue, and the
     socket is not marked as non-blocking, _a_c_c_e_p_t blocks the
     caller until a connection is present.  If the socket is
     marked non-blocking and no pending connections are present
     on the queue, _a_c_c_e_p_t returns an error as described below.
     The accepted socket, _n_s, may not be used to accept more con-
     nections.	The original socket _s remains open.

     The argument _a_d_d_r is a result parameter that is filled in
     with the address of the connecting entity, as known to the
     communications layer.  The exact format of the _a_d_d_r parame-
     ter is determined by the domain in which the communication
     is occurring.  The _a_d_d_r_l_e_n is a value-result parameter; it
     should initially contain the amount of space pointed to by
     _a_d_d_r; on return it will contain the actual length (in bytes)
     of the address returned.  This call is used with
     connection-based socket types, currently with SOCK_STREAM.

     It is possible to _s_e_l_e_c_t(2) a socket for the purposes of
     doing an _a_c_c_e_p_t by selecting it for read.

     For certain protocols which require an explicit confirma-
     tion, such as ISO or DATAKIT, one should think of accept as
     merely dequeueing the next connection request, and not in of
     itself implying confirmation.  Confirmation can be implied
     by a normal read or write on the new file desciptor, and
     rejection can be implied by closing the new socket.

     One can obtain user connection request data without confirm-
     ing the connection by issuing a recvmsg call with an
     msg_iovlen of 0 and a non-zero msg_controllen, or by issuing
     a _g_e_t_s_o_c_k_o_p_t(2) request.  Similarly, one can provide user
     connection rejection information by issuing a sendmsg call



Printed 7/27/90                May				1






ACCEPT(2)		      1990			ACCEPT(2)



     with providing only the control information, or by calling
     _s_e_t_s_o_c_k_o_p_t(2).

RREETTUURRNN VVAALLUUEE
     The call returns -1 on error.  If it succeeds, it returns a
     non-negative integer that is a descriptor for the accepted
     socket.

EERRRROORRSS
     The _a_c_c_e_p_t will fail if:

     [EBADF]		 The descriptor is invalid.

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

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

     [EFAULT]		 The _a_d_d_r parameter is not in a writable
			 part of the user address space.

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

SSEEEE AALLSSOO
     bind(2), connect(2), listen(2), select(2), socket(2)




























Printed 7/27/90                May				2