我想在服务器接受客户端连接之前等待10秒,我一直在寻找网络,但我没有找到示例,
这是我写的代码,是否有人可以为此提供解决方案,非常感谢:
class Program
{
// 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(10000);
}
// 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();
}
static void Main(string[] args)
{
Int32 port = 1300;
IPAddress localAddr = IPAddress.Parse("127.0.0.1");
TcpListener listener = new TcpListener(localAddr, port);
listener.Start();
while (true)
{
DoBeginAcceptTcpClient(listener);
}
}
}
答案 0 :(得分:0)
我真的不想知道你为什么要这样做,但只是等到结束接受之前就会这样做:
// Process the client connection.
public static void DoAcceptTcpClientCallback(IAsyncResult ar)
{
// Get the listener that handles the client request.
TcpListener listener = (TcpListener)ar.AsyncState;
// Wait a while
Thread.Sleep(10 * 1000);
// End the operation and display the received data on
// the console.
TcpClient client = listener.EndAcceptTcpClient(ar);
// ...
}