如何使用TcpClient设置异步连接的超时?

时间:2011-09-26 00:57:36

标签: c# timeout tcpclient

我一直在研究许多示例,例如thisthisthis,但它们似乎都不起作用。我不确定是什么问题但是对于每个例子我都试过等待被忽略了,我只是在大约1秒内得到标准的未处理套接字异常,无论指定的等待时间如何。 No connection could be made because the target machine actively refused it.

以下是帮助理解的摘录:

public void Connect(string host, int port)
{
    tcpClient.BeginConnect(host, port, OnConnect, null);
}

private void OnConnect(IAsyncResult async)
{
    tcpClient.EndConnect(async);
}

尝试了一堆不同的示例但是对于所有这些示例我的客户端应用程序要么在一秒钟之后失败,要么抛出套接字异常。尝试捕获是否是一个更好的解决方案,只是避免使用WaitHandles?

1 个答案:

答案 0 :(得分:2)

错误

  

无法建立连接,因为目标计算机是主动的   拒绝了。

通常意味着远程计算机上的该端口上没有运行任何内容,或者某处有阻止请求的防火墙。

有一个

tcpClient.SendTimeout

tcpClient.ReceiveTimeout回答您的具体问题,但这可能不是您的问题。