有没有一个好的,免费的telnet库可用于C#(不是ASP.NET)?我在谷歌上找到了一些,但他们都有这样或那样的问题(不支持登录/密码,不支持脚本模式)。我假设微软仍然没有包括telnet库作为.NET v3.5的一部分,因为我找不到它,如果它是。
9udxz4iz1#
我找到的最好的C# Telnet库叫做Minimalistic Telnet。非常容易理解,使用和修改。它对我需要配置的Cisco路由器非常有效。
1dkrff032#
下面是我的代码,它终于可以工作了
using System; using System.IO; using System.Net; using System.Net.Sockets; using System.Text.RegularExpressions; using System.Threading; class TelnetTest { static void Main(string[] args) { TelnetTest tt = new TelnetTest(); tt.tcpClient = new TcpClient("myserver", 23); tt.ns = tt.tcpClient.GetStream(); tt.connectHost("admin", "admin"); tt.sendCommand(); tt.tcpClient.Close(); } public void connectHost(string user, string passwd) { bool i = true; while (i) { Console.WriteLine("Connecting....."); Byte[] output = new Byte[1024]; String responseoutput = String.Empty; Byte[] cmd = System.Text.Encoding.ASCII.GetBytes("\n"); ns.Write(cmd, 0, cmd.Length); Thread.Sleep(1000); Int32 bytes = ns.Read(output, 0, output.Length); responseoutput = System.Text.Encoding.ASCII.GetString(output, 0, bytes); Console.WriteLine("Responseoutput: " + responseoutput); Regex objToMatch = new Regex("login:"); if (objToMatch.IsMatch(responseoutput)) { cmd = System.Text.Encoding.ASCII.GetBytes(user + "\r"); ns.Write(cmd, 0, cmd.Length); } Thread.Sleep(1000); bytes = ns.Read(output, 0, output.Length); responseoutput = System.Text.Encoding.ASCII.GetString(output, 0, bytes); Console.Write(responseoutput); objToMatch = new Regex("Password"); if (objToMatch.IsMatch(responseoutput)) { cmd = System.Text.Encoding.ASCII.GetBytes(passwd + "\r"); ns.Write(cmd, 0, cmd.Length); } Thread.Sleep(1000); bytes = ns.Read(output, 0, output.Length); responseoutput = System.Text.Encoding.ASCII.GetString(output, 0, bytes); Console.Write("Responseoutput: " + responseoutput); objToMatch = new Regex("#"); if (objToMatch.IsMatch(responseoutput)) { i = false; } } Console.WriteLine("Just works"); } }
k97glaaz3#
另一个有不同概念的:http://www.klausbasan.de/misc/telnet/index.html
ss2ws0br4#
我最终找到了MinimalistTelnet并将其适应我的用途。由于我试图连接的唯一**设备,我最终需要能够大量修改代码。
**在这种情况下,唯一可有效解释为脑死亡。
i2loujxw5#
我目前正在评估两个可能感兴趣的.NET(v2.0)C# Telnet库:
希望这个有用。你好,安迪。
0yycz8jy6#
另一个,它是一个较老的项目,但共享完整的源代码:http://telnetcsharp.codeplex.com/
r55awzrz7#
我非常怀疑telnet库是否会成为. NetBCL的一部分,尽管您确实拥有几乎完全的套接字支持,因此模拟telnet客户机并不太困难,Telnet在它的一般实现中是一个遗留的和垂死的技术,存在的地方通常位于一个漂亮的新的现代门面后面。我会发现开箱即用SSH和启用telnet通常被认为是不好的做法。您可以查看:http://granados.sourceforge.net/-用于.Net http://www.tamirgal.com/home/dev.aspx?Item=SharpSsh的SSH库您仍然需要放置自己的 Package 器来处理事件,以便以脚本方式提供输入。
7条答案
按热度按时间9udxz4iz1#
我找到的最好的C# Telnet库叫做Minimalistic Telnet。非常容易理解,使用和修改。它对我需要配置的Cisco路由器非常有效。
1dkrff032#
下面是我的代码,它终于可以工作了
k97glaaz3#
另一个有不同概念的:http://www.klausbasan.de/misc/telnet/index.html
ss2ws0br4#
我最终找到了MinimalistTelnet并将其适应我的用途。由于我试图连接的唯一**设备,我最终需要能够大量修改代码。
**在这种情况下,唯一可有效解释为脑死亡。
i2loujxw5#
我目前正在评估两个可能感兴趣的.NET(v2.0)C# Telnet库:
希望这个有用。
你好,安迪。
0yycz8jy6#
另一个,它是一个较老的项目,但共享完整的源代码:http://telnetcsharp.codeplex.com/
r55awzrz7#
我非常怀疑telnet库是否会成为. NetBCL的一部分,尽管您确实拥有几乎完全的套接字支持,因此模拟telnet客户机并不太困难,Telnet在它的一般实现中是一个遗留的和垂死的技术,存在的地方通常位于一个漂亮的新的现代门面后面。我会发现开箱即用SSH和启用telnet通常被认为是不好的做法。
您可以查看:http://granados.sourceforge.net/-用于.Net http://www.tamirgal.com/home/dev.aspx?Item=SharpSsh的SSH库
您仍然需要放置自己的 Package 器来处理事件,以便以脚本方式提供输入。