当前位置:  开发笔记 > 编程语言 > 正文

C#Telnet库

如何解决《C#Telnet库》经验,为你挑选了2个好方法。

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

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



1> 小智..:

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

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


到目前为止,这也是我发现的最佳工作示例.我的派生/更新工作在GitHub上,如果有兴趣的话,可以在NuGet上发布.https://github.com/9swampy/Telnet
感谢@ 9swampy在GitHub上提供更新版本.此评论应作为答案的更新包含在内,因为它很难找到,并且您的版本比原始版本有了很大改进.

2> 小智..:

这是我的代码终于工作了

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

推荐阅读
大大炮
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有