Node:Accepting Connections, Next:Who is Connected, Previous:Listening, Up:Connections
When a server receives a connection request, it can complete the
connection by accepting the request. Use the function accept
to do this.
A socket that has been established as a server can accept connection
requests from multiple clients. The server's original socket
does not become part of the connection; instead, accept
makes a new socket which participates in the connection.
accept
returns the descriptor for this socket. The server's
original socket remains available for listening for further connection
requests.
The number of pending connection requests on a server socket is finite.
If connection requests arrive from clients faster than the server can
act upon them, the queue can fill up and additional requests are refused
with an ECONNREFUSED
error. You can specify the maximum length of
this queue as an argument to the listen
function, although the
system may also impose its own internal limit on the length of this
queue.
int accept (int socket, struct sockaddr *addr, socklen_t *length_ptr) | Function |
This function is used to accept a connection request on the server
socket socket.
The The addr and length-ptr arguments are used to return information about the name of the client socket that initiated the connection. See Socket Addresses, for information about the format of the information. Accepting a connection does not make socket part of the
connection. Instead, it creates a new socket which becomes
connected. The normal return value of After If an error occurs,
This function is defined as a cancellation point in multi-threaded programs, so one has to be prepared for this and make sure that allocated resources (like memory, files descriptors, semaphores or whatever) are freed even if the thread is canceled. |
The accept
function is not allowed for sockets using
connectionless communication styles.