TcpListener::EndAcceptSocket Method (IAsyncResult^)
Asynchronously accepts an incoming connection attempt and creates a new Socket to handle remote host communication.
Assembly: System (in System.dll)
Parameters
- asyncResult
-
Type:
System::IAsyncResult^
An IAsyncResult returned by a call to the BeginAcceptSocket method.
| Exception | Condition |
|---|---|
| ObjectDisposedException | The underlying Socket has been closed. |
| ArgumentNullException | The asyncResult parameter is null. |
| ArgumentException | The asyncResult parameter was not created by a call to the BeginAcceptSocket method. |
| InvalidOperationException | The EndAcceptSocket method was previously called. |
| SocketException | An error occurred while attempting to access the Socket. See the Remarks section for more information. |
This method blocks until the operation is complete. To perform this operation synchronously, use the AcceptSocket method.
Note |
|---|
You can call the RemoteEndPoint property of the returned Socket to identify the remote host's network address and port number. |
Note |
|---|
If you receive a SocketException, use the SocketException::ErrorCode property to obtain the specific error code and refer to the Windows Sockets version 2 API error code documentation in the MSDN library at http://msdn.microsoft.com/library/ for a detailed description of the error. |
Note |
|---|
This member outputs trace information when you enable network tracing in your application. For more information, see Network Tracing in the .NET Framework. |
The following code example demonstrates the use of the BeginAcceptSocket method to create and connect a socket. The callback delegate calls the EndAcceptSocket method to end the asynchronous request.
// Thread signal.
public:
static ManualResetEvent^ ClientConnected;
// Accept one client connection asynchronously.
public:
static void DoBeginAcceptSocket(TcpListener^ listener)
{
// Set the event to nonsignaled state.
ClientConnected->Reset();
// Start to listen for connections from a client.
Console::WriteLine("Waiting for a connection...");
// Accept the connection.
// BeginAcceptSocket() creates the accepted socket.
listener->BeginAcceptSocket(
gcnew AsyncCallback(DoAcceptSocketCallback), listener);
// Wait until a connection is made and processed before
// continuing.
ClientConnected->WaitOne();
}
// Process the client connection.
public:
static void DoAcceptSocketCallback(IAsyncResult^ result)
{
// Get the listener that handles the client request.
TcpListener^ listener = (TcpListener^) result->AsyncState;
// End the operation and display the received data on the
//console.
Socket^ clientSocket = listener->EndAcceptSocket(result);
// Process the connection here. (Add the client to a
// server table, read data, etc.)
Console::WriteLine("Client connected completed");
// Signal the calling thread to continue.
ClientConnected->Set();
}
Available since 2.0
