C#Telnet库

时间:2008-12-23 21:59:11

标签: c# .net telnet

是否有适用于C#(不是ASP .NET)的好的免费telnet库?我在谷歌上发现了一些,但它们都有一个或另一个问题(不支持登录/密码,不支持脚本模式)。

我假设MS仍然没有包含一个telnet库作为.NET v3.5的一部分,因为我找不到它。我会尽力错误。

7 个答案:

答案 0 :(得分:46)

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

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

答案 1 :(得分:6)

这是我的代码终于正常工作

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

答案 2 :(得分:3)

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

答案 3 :(得分:1)

我非常怀疑telnet库是否会成为.Net BCL的一部分,虽然你确实拥有几乎完整的套接字支持,因此模拟telnet客户端并不困难,Telnet在其一般实现中是遗留和死亡存在的技术通常位于一个漂亮的新现代外观背后。就Unix / Linux变种而言,你会发现它的开箱即用SSH和启用telnet通常被认为是不好的做法。

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

您仍然需要使用自己的包装器来处理以脚本方式输入输入的事件。

答案 4 :(得分:1)

我最终找到了MinimalistTelnet并根据我的用途进行了调整。由于我试图附加的唯一**设备,我最终需要能够大量修改代码。

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

答案 5 :(得分:1)

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

希望这有帮助。

此致 安迪。

答案 6 :(得分:1)

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