C#Telnet库

有没有一个好的,免费的Telnet库可用于C#(不ASP.net)? 我在谷歌上find了一些,但他们都有一个或另一个问题(不支持login/密码,不支持脚本模式)。

我假设MS仍然没有包含一个telnet库作为.NET v3.5的一部分,因为我找不到它。 尽pipe如此,我还是不愿意做错。

最好的C#Telnet库我发现被称为Minimalistic Telnet。 很容易理解,使用和修改。 它适用于我需要configuration的Cisco路由器。

http://www.codeproject.com/KB/IP/MinimalisticTelnet.aspx

这是我的代码是最后工作

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"); } } 

这里是一个telnet库和程序,用它作为例子。 所有的来源(包括图书馆来源)都在文章的底部。

该示例执行login到Cisco路由器并下载configuration

http://www.xpresslearn.com/networking/code/csharp-telnet-client

另一个有不同的概念: http : //www.klausbasan.de/misc/telnet/index.html

我非常怀疑一个telnet库会永远成为.Net BCL的一部分,尽pipe你几乎拥有全套接字的支持,所以仿真一个telnet客户端不会太困难,Telnet在其一般实现中是一个传统和垂死的技术,存在一般坐在一个不错的新的现代门面。 在Unix / Linux的变体方面,你会发现它的SSH和启用telnet通常被认为是不好的做法。

你可以看看: http : //granados.sourceforge.net/ – .net的SSH库http://www.tamirgal.com/home/dev.aspx?Item=SharpSsh

您仍然需要放置自己的包装来处理以脚本方式input的事件。

我最终find了MinimalistTelnet并将其适用于我的用途。 我最终需要能够大量修改代码,由于我试图附加到独特的**设备。

**在这个例子中唯一可以被有效地解释为脑死亡。

我目前正在评估两个可能感兴趣的.NET(v2.0)C#Telnet库:

希望这可以帮助。

问候,安迪。

另一个,它是一个较老的项目,但共享完整的源代码: http : //telnetcsharp.codeplex.com/