C#Telnet库
有没有一个好的,免费的Telnet库可用于C#(不ASP.net)? 我在谷歌上find了一些,但他们都有一个或另一个问题(不支持login/密码,不支持脚本模式)。
我假设MS仍然没有包含一个telnet库作为.NET v3.5的一部分,因为我找不到它。 尽pipe如此,我还是不愿意做错。
最好的C#Telnet库我发现被称为Minimalistic Telnet。 很容易理解,使用和修改。 它适用于我需要configuration的Cisco路由器。
这是我的代码是最后工作
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/
- 在C#中最简单的方法来做一个消防和遗忘的方法?
- 获取应用程序文件夹path的最佳方法
- 线程与线程池
- 我如何自定义Windows窗体的系统菜单?
- DateTime.Parse(“2012-09-30T23:00:00.0000000Z”)总是转换为DateTimeKind.Local
- 在.NET中双重检查locking
- “Type not expected”,使用DataContractSerializer – 但它只是一个简单的类,没有有趣的东西?
- Gmail错误:SMTP服务器需要安全连接或客户端未通过身份validation。 服务器响应是:5.5.1需要身份validation
- 分派器BeginInvoke语法