我正在编写 ac# SSH 隧道程序以将动态隧道合并到一个程序中,而不是使用 putty+firefox socks4/chrome socks4 插件,输入相同的用户/密码..ect。它正在使用 Renci.SSHNet 库。
我的问题是:当我创建一个新的 SshClient 对象时,我希望能够稍后从终止连接按钮终止该连接,并且还能够运行一个单独的线程,该线程说 while(isConnected) if (! addedToList) addtolist ..问题是我不确定如何访问不同的同时运行的 sshClient 对象。假设我有 3 个与不同主机的开放连接。如果我从当前连接中选择主机 ip,我需要一种方法将该 ip 地址与 SshCLient 连接连接,然后运行 sshClient.Disconnect()。我意识到您可以使用 sshClient.ConnectionInfo.Host.ToString() 并匹配一个字符串,但如果我使用不同的方法(单击终止连接按钮)我不知道如何匹配 192.168 的主机 ip。 1.1 到连接到该主机的 sshClient。
我研究了弱引用,但这似乎只有在我只有一个 sshClient 时才有效。如果有一种方法可以访问当前创建的 SshClient 对象,然后将其与 Host ip 属性匹配,它将起作用。我在 Google 中找不到这个。
我考虑过设计一些精心设计的方法来创建以 deviceIpString 命名的私有对象变量 SshClients,但不确定如何创建以另一个变量的内容(字符串)命名的变量。如:
deviceIpString = 192.168.1.1;
(i am pretending that backticks access the variable's data, since I dont know how to do it)
private SshClient 'deviceIpString' = new (SshClient(arguments));