尝试连接不存在的主机时,SshClient.Connect()无限期地被阻止

时间:2016-01-06 14:10:51

标签: c# .net ssh ssh.net

我正在使用Renci.SshNet(RuntimeVersion:2.0.50727)来连接支持ssh的linux机器,它适用于网络中可用的主机,但每当我尝试连接到不在的任何主机时网络似乎停留在SshClient.Connect()

我正在考虑一种解决方法,例如在连接设备之前ping设备,但不确定设备的可靠性。

1 个答案:

答案 0 :(得分:1)

ConnectionInfo具有您可以设置的Timeout属性。默认为30秒,因此我建议将其降低到适合您环境的范围,例如5秒钟。

如果使用主机名进行连接,您还可以选择使用Dns.GetHostEntry()承担解析IP地址的任务。

var entries = Dns.GetHostEntry(host);
if( entries.AddressList.Length > 0 )
{
    //Optionally do some checking with AddressFamily if you have v4/v6 issues
    var ip = entries.AddressList[0];
}

如果你想制造一个“pinger”,你可以使用TcpClient来尝试绑定到主机和端口但是因为那基本上就是SshClient正在做的事情我觉得它会有点过头了