54

C# (ASP .NET 以外) で使用できる優れた無料の telnet ライブラリはありますか? Google でいくつか見つけましたが、いずれも何らかの問題があります (ログイン/パスワードをサポートしていない、スクリプト モードをサポートしていない)。

私は、MS がまだ .NET v3.5 の一部として telnet ライブラリを含んでいないと仮定しています。私は間違っていると思います。

4

7 に答える 7

52

私が見つけた最高の C# Telnet ライブラリは、Minimalistic Telnet と呼ばれます。理解し、使用し、変更するのは非常に簡単です。構成する必要がある Cisco ルーターに最適です。

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

于 2009-10-08T14:56:33.423 に答える
10

これが最終的に機能する私のコードです

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");
}
}
于 2012-01-11T22:45:25.680 に答える
3

別の概念を持つ別のもの:http ://www.klausbasan.de/misc/telnet/index.html

于 2010-06-18T20:12:45.230 に答える
1

私は現在、関心のある2つの.NET(v2.0)C#Telnetライブラリを評価しています。

お役に立てれば。

よろしく、アンディ。

于 2009-03-23T14:00:53.800 に答える
1

結局、 MinimalistTelnetを見つけて、自分の用途に合わせました。接続しようとしている独自の**デバイスのために、コードを大幅に変更できるようにする必要がありました。

** この場合の一意性は、脳死状態であると有効に解釈できます。

于 2008-12-24T00:04:30.030 に答える
1

もう 1 つ、これは古いプロジェクトですが、完全なソース コードを共有しています: http://telnetcsharp.codeplex.com/

于 2011-01-11T18:09:56.280 に答える
0

Telnet ライブラリが .Net BCL の一部になるとは思えませんが、ほぼ完全なソケット サポートがあるため、Telnet クライアントをエミュレートするのはそれほど難しくありません。存在するのは、通常、素敵な新しいモダンなファサードの後ろにあります。Unix/Linux のバリアントに関しては、箱から出してすぐに SSH を使用し、telnet を有効にすることは、一般的に不適切な方法と見なされていることがわかります。

チェックアウトできます: http://granados.sourceforge.net/ - .Net 用の SSH ライブラリ http://www.tamirgal.com/home/dev.aspx?Item=SharpSsh

スクリプト化された方法で入力をフィードするためのイベントを処理するには、独自のラッパーを配置する必要があります。

于 2008-12-23T22:08:08.827 に答える