// Thread signal.
public static ManualResetEvent tcpClientConnected =
new ManualResetEvent(false);
// Accept one client connection asynchronously.
public static void DoBeginAcceptTcpClient(TcpListener
listener)
{
// Set the event to nonsignaled state.
tcpClientConnected.Reset();
// Start to listen for connections from a client.
Console.WriteLine("Waiting for a connection...");
// Accept the connection.
// BeginAcceptSocket() creates the accepted socket.
listener.BeginAcceptTcpClient(
new AsyncCallback(DoAcceptTcpClientCallback),
listener);
// Wait until a connection is made and processed before
// continuing.
tcpClientConnected.WaitOne();
}
// Process the client connection.
public static void DoAcceptTcpClientCallback(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.
TcpClient client = listener.EndAcceptTcpClient(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.
tcpClientConnected.Set();
}
RECENT COMMENT