我正在使用 Renci.SshNet (RuntimeVersion: 2.0.50727) 连接启用 ssh 的 linux 机器,它对于网络中可用的主机正常工作,但是每当我尝试连接到不在网络中的任何主机时似乎卡在了线上SshClient.Connect()
我正在考虑一种解决方法,例如在连接设备之前 ping 设备,但不确定它有多可靠。
ConnectionInfo
有一个Timeout
可以设置的属性。它默认为 30 秒,因此我建议将其降低到您的环境可以容忍的时间,例如 5 秒。
如果您使用主机名进行连接,您还可以选择使用Dns.GetHostEntry()
.
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
正在做的事情,我认为这将是矫枉过正。