Я пытаюсь написать консольное приложениеAcceptTcpClientAsync не ждать ответа
_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. Что мне не хватает?
Заранее спасибо ..
Если AcceptTcpClient работает - это предполагает логическую ошибку, так как неасинхронный код будет принимать более одного соединения. – BugFinder
Да, он принимает несколько соединений, но ждет, пока одно соединение будет закрыто, прежде чем оно продолжит работать с другим. – xenep
Итак, вы передаете поток ... и вернитесь вокруг цикла. Даже ваш способ его по-прежнему, по большей части .. – BugFinder