AcceptTcpClientAsync不等待响应

时间:2017-02-15 15:27:28

标签: c# sockets asynchronous tcpclient tcplistener

我正在尝试编写控制台应用程序

        _mainListener = new TcpListener(new IPEndPoint(IPAddress.Any, 5000));
        _mainListener.Start();

        try
        {
            while (true)
            {

                TcpClient client = await _mainListener.AcceptTcpClientAsync();
                client.ReceiveTimeout = 60000;

                WaitForData(client);

            }
        }
        catch (Exception ex)
        {
            StartListening();
        }

之后立即终止申请
TcpClient client = await _mainListener.AcceptTcpClientAsync();

我知道连接到端口5000没有问题导致AcceptTcpClient的工作方式与Async方法不同,它会转到具有有效响应的WaitForData。我需要使用Async,因为应用程序将连接到多个ips。我错过了什么?

提前致谢..

1 个答案:

答案 0 :(得分:0)

await关键字导致您的方法执行停止,并且一旦客户端连接,该方法的其余部分将继续。

但是,如果这是您使用Main()方法调用的唯一代码,则程序将在您到达该行时立即终止,因为没有任何内容在运行。

我认为您不需要对要执行的操作使用异步,只要WaitForData()在内部是异步的,那么此代码将围绕循环继续接受更多客户端。