C# AcceptCpclientAsync不';不要等待答复
我正在尝试编写一个控制台应用程序C# AcceptCpclientAsync不';不要等待答复,c#,sockets,asynchronous,tcpclient,tcplistener,C#,Sockets,Asynchronous,Tcpclient,Tcplistener,我正在尝试编写一个控制台应用程序 _mainListener = new TcpListener(new IPEndPoint(IPAddress.Any, 5000)); _mainListener.Start(); try { while (true) { TcpClient client = await _mainListener.Accept
_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 one,因为应用程序将连接到多个IP。我错过了什么
提前谢谢 关键字
wait
会导致方法停止执行,并且一旦客户端连接,方法的其余部分将继续执行
但是,如果这是从Main()
方法调用的唯一代码,那么程序将在到达该行时立即终止,因为没有任何东西在运行
我认为您不需要使用async来完成您要做的事情,只要
WaitForData()
在内部是异步的,那么这段代码就会循环运行,继续接受更多的客户端。如果AcceptCpcClient工作,它会提示逻辑错误,由于非异步代码仍将接受多个连接。是的,它接受多个连接,但等待一个连接关闭,然后再继续在另一个连接上工作,因此您将切换到线程。。然后绕着圈子走。即使你的方式也是一样的,大部分情况下..我需要异步来模拟连接到多个端口,使用sync方法,其他连接在活动连接关闭之前等待。只有当WaitForData
本身是sync时才会发生这种情况。如果它是异步的或在单独的线程中运行sync,则此方法将在while循环中运行并接受下一个客户端。我遇到了相同的问题,我已更改了wait\u mainlister.AcceptTcpClientAsync()
到wait_mainlister.AcceptTcpClientAsync().Result代码>。这解决了问题,但我真的不想阻塞池的线程。我想应该有另一个解决办法。。。。