在接受客户端连接 TCPLISTENER 之前等待特定时间

本文关键字:等待 定时间 TCPLISTENER 客户端 连接 | 更新日期: 2023-09-27 18:34:19

我想等待 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);
        }
    }
}

在接受客户端连接 TCPLISTENER 之前等待特定时间

我真的不想知道你为什么要这样做,但只需在结束接受之前等待就可以了:

// 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);
    // ...
}