【发布时间】:2017-11-14 03:48:31
【问题描述】:
我正在尝试编写一个控制台应用程序
_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。我需要使用异步之一,因为应用程序将连接到多个 ip。我错过了什么?
提前谢谢..
【问题讨论】:
-
如果 AcceptTcpClient 工作 - 它会提示逻辑错误,因为非异步代码仍然会接受多个连接。
-
是的,它接受多个连接,但要等待一个连接关闭,然后才能继续在另一个连接上工作
-
所以你交给一个线程......然后回到循环。在大多数情况下,即使你的方式也是一样的......
标签: c# sockets asynchronous tcpclient tcplistener