accept (Windows Sockets)

This function permits an incoming connection attempt on a socket.

SOCKET accept(
  SOCKET s,
  struct SOCK_ADDR* addr,
  int FAR* addrlen
);

Parameters

  • s
    [in] Descriptor identifying a socket that has been placed in a listening state with the listen function. The connection is actually made with the socket that is returned by this function.
  • addr
    [out] Optional pointer to a buffer that receives the address of the connecting entity, as known to the communications layer. The exact format of the addr parameter is determined by the address family established when the socket was created.
  • addrlen
    [out] Optional pointer to an integer that contains the length of addr.

Return Values

If no error occurs, this function returns a value of type SOCKET that is a descriptor for the new socket. This returned value is a handle for the socket on which the actual connection is made.

The integer referred to by addrlen initially contains the amount of space pointed to by addr. On return, it will contain the actual length in bytes of the address returned.

If an error occurs, a value of INVALID_SOCKET is returned, and a specific error code can be retrieved by calling WSAGetLastError. The following table shows the possible error code return values.

Error code Description
WSANOTINITIALISED A successful WSAStartup call must occur before using this function.
WSAENETDOWN The network subsystem has failed.
WSAEFAULT The addrlen parameter is too small or addr is not a valid part of the user address space.
WSAEINTR. The socket was closed.
WSAEINPROGRESS A blocking Winsock call is in progress, or the service provider is still processing a callback function.
WSAEINVAL The listen function was not invoked prior to this function.
WSAEMFILE The queue is nonempty on entry to this function, and there are no descriptors available.
WSAENOBUFS No buffer space is available.
WSAENOTSOCK The descriptor is not a socket.
WSAEOPNOTSUPP The referenced socket is not a type that supports connection-oriented service.
WSAEWOULDBLOCK The socket is marked as nonblocking and no connections are present to be accepted.

Remarks

This function extracts the first connection on the queue of pending connections on socket s. It then creates a new socket and returns a handle to the new socket. The newly created socket is the socket that will handle the actual connection and has the same properties as socket s, including the asynchronous events registered with the WSAEventSelect function.

The accept function can block the caller until a connection is present if no pending connections are present on the queue and the socket is marked as blocking. If the socket is marked as nonblocking and no pending connections are present on the queue, this function returns an error as described in the following table. After the successful completion of accept returns a new socket handle, the accepted socket cannot be used to accept more connections. The original socket remains open and listens for new connection requests.

The addr parameter is a result parameter that is completed with the address of the connecting entity, as known to the communications layer. The exact format of the addr parameter is determined by the address family in which the communication is occurring. The addrlen parameter is a value-result parameter. It should initially contain the amount of space pointed to by addr; on return it will contain the actual length (in bytes) of the address returned.

The accept function is used with connection-oriented socket types such as SOCK_STREAM.

Note   Asynchronous transfer mode (ATM) is not supported in Microsoft® Windows® CE .NET.

Notes for Bluetooth

The accept function works the same for RFCOMM as for any standard sockets implementation.

Requirements

OS Versions: Windows CE 1.0 and later.
Header: Winsock2.h.
Link Library: Ws2.lib.

See Also

bind (Windows Sockets) | connect (Windows Sockets) | listen | select | socket (Windows Sockets) | WSAAccept | WSAEventSelect | WSAGetLastError | WSAStartup

 Last updated on Saturday, April 10, 2004

© 1992-2003 Microsoft Corporation. All rights reserved.