it-swarm.com.de

C # Telnet-Bibliothek

Gibt es eine gute, kostenlose Telnet-Bibliothek für C # (nicht ASP .NET)? Ich habe einige auf Google gefunden, aber alle haben das eine oder andere Problem (Login nicht unterstützt/Passwort, unterstütze keinen geskripteten Modus).

Ich gehe davon aus, dass MS noch keine Telnet-Bibliothek als Teil von .NET v3.5 enthält, da ich sie sonst nicht finden könnte. Ich würde mich allerdings gerne irren.

51
salt.racer

Die beste C # Telnet-Bibliothek, die ich gefunden habe, heißt Minimalistic Telnet. Sehr einfach zu verstehen, zu verwenden und zu ändern. Es funktioniert hervorragend für die Cisco-Router, die ich konfigurieren muss.

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

47
Richard

Hier ist mein Code, der endlich funktioniert

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

Ein anderes, es ist ein älteres Projekt, teilt aber den vollständigen Quellcode: http://telnetcsharp.codeplex.com/

1
Horst Walter

Ich fand MinimalistTelnet und passte es meinen Verwendungen an. Am Ende musste ich in der Lage sein, den Code aufgrund des einzigartigen ** Geräts, an das ich mich anschließen möchte, stark zu ändern.

** Einzigartig in diesem Fall kann gültig als hirntot interpretiert werden.

1
salt.racer

Ich bezweifle sehr, dass eine Telnet-Bibliothek jemals Teil der .Net-BCL sein wird, obwohl Sie fast vollständige Socket-Unterstützung haben, sodass es nicht zu schwierig wäre, einen Telnet-Client zu emulieren. Telnet ist in seiner allgemeinen Implementierung eine veraltete und aussterbende Technologie Existiert in der Regel hinter einer schönen neuen modernen Fassade. In Bezug auf Unix/Linux-Varianten werden Sie feststellen, dass die Verwendung von SSH und die Aktivierung von Telnet im Allgemeinen als unzureichend angesehen wird.

Sie können Folgendes überprüfen: http://granados.sourceforge.net/ - SSH Library for .Net http://www.tamirgal.com/home/dev.aspx?Item=) SharpSsh

Sie müssen weiterhin Ihren eigenen Wrapper einrichten, um Ereignisse für die Eingabe in Form von Skripten zu verarbeiten.

1
Matt

Ich evaluiere derzeit zwei .NET (v2.0) C # Telnet-Bibliotheken, die von Interesse sein könnten:

Hoffe das hilft.

Grüße, Andy.

1
MagicAndi