TcpListener.EndAcceptSocket Method
Asynchronously accepts an incoming connection attempt and creates a new Socket to handle remote host communication.
Namespace: System.Net.Sockets
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. |
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 = new ManualResetEvent(false); // 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( new AsyncCallback(DoAcceptSocketCallback), listener); // Wait until a connection is made and processed before // continuing. clientConnected.WaitOne(); } // Process the client connection. public static void DoAcceptSocketCallback(IAsyncResult ar) { // Get the listener that handles the client request. TcpListener listener = (TcpListener) ar.AsyncState; // End the operation and display the received data on the //console. Socket clientSocket = listener.EndAcceptSocket(ar); // 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(); }
Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core Role not supported), Windows Server 2008 R2 (Server Core Role supported with SP1 or later; Itanium not supported)
The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.
Note