سؤال

هل هناك مكتبة Telnet جيدة جيدة متوفرة ل C # (وليس ASP .NET)؟ لقد وجدت بعضا على Google، لكن جميعهم لديهم مشكلة واحدة أو آخر (لا تدعم تسجيل الدخول / كلمة المرور، لا تدعم وضع محمي).

أفترض أن MS لا تزال لم تتضمن مكتبة Telnet كجزء من .NET V3.5 كما لم أستطع العثور عليه إذا كان ذلك. أود أن أكون مخطئا.

هل كانت مفيدة؟

المحلول

أفضل C # Telnet Lib الذي وجدته يسمى Telnet أضيق الحدود. من السهل جدا فهم واستخدام وتعديل. إنه يعمل بشكل رائع لأجهزة توجيه Cisco التي أحتاج إلى تكوينها.

http://www.codeproject.com/kb/ip/minimalistictelnet.aspx.

نصائح أخرى

هنا هو رمزي الذي يعمل أخيرا

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

واحد آخر بمفهوم مختلف: http://www.klausbasan.de/misc/telnet/index.html.

أشك كثيرا ستكون مكتبة Telnet جزءا من .NET BCL، على الرغم من أن لديك دعم مقبس كامل تقريبا، لذلك لن يكون من الصعب للغاية محاكاة عميل Telnet، فإن Telnet في تنفيذها العام هو تكنولوجيا إرث وموت موجود بشكل عام يقع وراء الواجهة الحديثة الجديدة لطيفة. من حيث المتغيرات UNIX / Linux، ستجد ذلك الصندوق الخاص به SSH وتمكين Telnet يعتبر بشكل عام ممارسة سيئة.

يمكنك التحقق من:http://granados.sourceforge.net/ - مكتبة SSH ل .NEThttp://www.tamirgal.com/home/dev.aspx؟item=sharpssh.

ما زلت بحاجة إلى وضع التجمع الخاص بك لمعالجة الأحداث للتغذية في المدخلات بطريقة نصية.

انتهى بي الأمر minimalisttelnet. وتكييفها إلى استخداماتي. انتهى بي الأمر بالحاجة إلى أن أكون قادرا على تعديل التعليمات البرمجية بشدة بسبب جهاز ** فريد من نوعه الذي أحاول إرفاقه به.

** فريدة من نوعها في هذه الحالة يمكن تفسيرها بشكل صحيح كقات في الدماغ.

أنا حاليا تقييم مكتبين .NET (V2.0) C # Telnet التي قد تكون ذات أهمية:

أتمنى أن يساعدك هذا.

التحيات، أندي.

واحد آخر، إنه مشروع أقدم ولكن يشارك الكود المصدر الكامل: http://telnetcsharp.codeplex.com/

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top