|
accept
The Windows Sockets accept function accepts a connection on a socket.
SOCKET accept (
SOCKET s,
|
| struct sockaddr FAR* addr,
|
| int FAR* addrlen
|
| );
|
|
Parameters
s
[in] A descriptor identifying a socket which is listening for connections
after a listen.
addr
[out] An optional pointer to a buffer which receives the address of the
connecting entity, as known to the communications layer. The exact format of the addr argument is determined by the address family established when the socket was
created.
addrlen
[out] An optional pointer to an integer which contains the length of the
address addr.
Remarks
This routine extracts the first connection on the queue of pending connections
on s, creates a new socket and returns a handle to the new socket. The newly
created socket has the same properties as s including asynchronous events registered with WSAAsyncSelect or with WSAEventSelect, but not including the listening socket's group ID, if any. If no pending connections
are present on the queue, and the socket is not marked as nonblocking, accept blocks the caller until a connection is present. If the socket is marked
nonblocking and no pending connections are present on the queue, accept returns an error as described below. The accepted socket cannot be used to
accept more connections. The original socket remains open.
The argument addr 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 addr parameter is determined by the address family in which the communication is
occurring. The addrlen 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. This call is used with connection-oriented socket types such as
SOCK_STREAM. If addr and/or addrlen are equal to NULL, then no information about the remote address of the
accepted socket is returned.
Return Values
If no error occurs, accept returns a value of type SOCKET which is a descriptor for the accepted socket.
Otherwise, a value of INVALID_SOCKET is returned, and a specific error code
can be retrieved by calling WSAGetLastError.
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.
Error Codes
WSANOTINITIALISED
| A successful WSAStartup must occur before using this FUNCTION.
| WSAENETDOWN
| The network subsystem has failed.
| WSAEFAULT
| The addrlen argument is too small or addr is not a valid part of the user address space.
| WSAEINTR
| The (blocking) call was canceled through WSACancelBlockingCall.
| WSAEINPROGRESS
| A blocking Windows Sockets 1.1 call is in progress, or the service provider is
still processing a callback function.
| WSAEINVAL
| listen was not invoked prior to accept.
| WSAEMFILE
| The queue is nonempty upon entry to accept 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.
|
See Also
bind, connect, listen, select, socket, WSAAsyncSelect, WSAAccept
Related Links
Software for Delphi and C++ Builder developers
Software for Visual Studio .NET developers
Software for Visual Basic 6 developers
Delphi Tips&Tricks
MegaDetailed.NET
More Online Helps
Win32 Programmer's Reference (win32.hlp)
Win32 Multimedia Programmer's Reference (mmedia.hlp)
OLE Programmer's Reference (ole.hlp)
Microsoft Windows Pen API Programmer's Reference (penapi.hlp)
Microsoft Windows Telephony API (TAPI) Programmer's Reference (tapi.hlp)
Unix Manual Pages
|