Я делаю подключение к услуге, которую я создал на другом сервере с помощью:Почему TcpClient.BeginConnect возвращает AsyncWaitHandle.WaitOne вернуть false, если служба прослушивания отключена?
using (var clientSocket = new TcpClient())
{
...
//Connect async
var result = clientSocket.BeginConnect(hostIP, portNumber, null, null);
//Wait for connection up to our timeout
if (!result.AsyncWaitHandle.WaitOne(TimeSpan.FromSeconds(5)))
{
//This is NEVER run
throw new Exception("Connection timed out.");
}
//It makes it here but shouldn't!
}
Если другой сервер запущен, но сервис, который прослушивает порт вниз, это по-прежнему возвращает истину! (И если сервер выключен, он правильно выбрасывает исключение)
Почему?
Как это сделать, если служба не работает (и, следовательно, ничто не слушает этот порт)?
Действительно ли это что-то другое или оно внутренне такое же, как BeginConnect? –
«ConnectAsync» - это просто более современный способ подключения к сокет-клиенту асинхронно, тогда как «BeginConnect», похоже, более унаследованный. См. Более подробный ответ здесь: http://stackoverflow.com/a/5765032/633098 – silkfire