2008-12-23 12 views
43

क्या सी # (एएसपी .NET नहीं) के लिए एक अच्छी, मुफ्त टेलनेट लाइब्रेरी उपलब्ध है? मुझे Google पर कुछ मिल गए हैं, लेकिन उनमें सभी के पास एक मुद्दा है या दूसरा (लॉगिन/पासवर्ड का समर्थन न करें, स्क्रिप्ट किए गए मोड का समर्थन न करें)।सी # टेलनेट लाइब्रेरी

मुझे लगता है कि एमएस ने अभी भी .NET v3.5 के हिस्से के रूप में एक टेलनेट लाइब्रेरी शामिल नहीं की है क्योंकि मुझे यह नहीं मिला था। हालांकि मैं गलत होने के लिए loooooove होगा।

+0

स्वीकृत उत्तर अंतिम समाधान है।मुझे नहीं पता कि यह अभी भी उपलब्ध है, लेकिन उस समय उत्तर स्वीकार कर लिया गया था, न्यूनतम टेलनेट के लिए स्रोत कोड उपलब्ध था। –

उत्तर

40

बेस्ट सी # टेलनेट लिब मुझे मिला है जिसे न्यूनतम टेलनेट कहा जाता है। समझने, उपयोग करने और संशोधित करने में बहुत आसान है। यह सिस्को राउटर के लिए बहुत अच्छा काम करता है जिसे मुझे कॉन्फ़िगर करने की आवश्यकता है।

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

+1

यह वही है जो आपके लिए उल्लिखित कारणों से मेरे लिए काम करता है। मुझे खुशी है कि मैं इसे पसंद करने में अकेला नहीं हूं। :) –

+0

मिनिमलिस्टिस्ट टेलनेट ने मेरे और हमारी लैन टीम के लिए पूरी तरह से काम किया। मैंने पाठ फ़ाइल से कमांड पढ़ने के लिए इसे संशोधित करना समाप्त कर दिया ताकि हमारी लैन टीम आसानी से इसे तैनात कर सके। –

+0

इसका उपयोग शुरू भी किया। महान खोज – JCCyC

1

मुझे संदेह है कि एक टेलनेट पुस्तकालय कभी भी नेट बीसीएल का हिस्सा होगा, हालांकि आपके पास लगभग पूर्ण सॉकेट समर्थन है, इसलिए टेलनेट क्लाइंट का अनुकरण करना बहुत मुश्किल नहीं होगा, टेलनेट अपने सामान्य कार्यान्वयन में विरासत है और मरने वाली तकनीक जहां आम तौर पर मौजूद है, एक अच्छा नया आधुनिक मुखौटा पीछे बैठता है। यूनिक्स/लिनक्स वेरिएंट के संदर्भ में आप पाएंगे कि बॉक्स में एसएसएच है और टेलनेट को सक्षम करने के लिए आम तौर पर खराब अभ्यास माना जाता है। नेट http://www.tamirgal.com/home/dev.aspx?Item=SharpSsh

आप अभी भी जगह में अपने स्वयं के आवरण डाल करने के लिए एक पटकथा ढंग से इनपुट में खिलाने के लिए घटनाओं को प्रबंधित करना होगा के लिए SSH लाइब्रेरी - http://granados.sourceforge.net/:

आप की जाँच कर सकते हैं।

+2

मुद्दा यह है कि मैं एक दूरस्थ डिवाइस में टेलनेट करने की कोशिश कर रहा हूं जिसमें केवल टेलनेट सक्षम है। मैं एक मशीन स्थापित करने की कोशिश नहीं कर रहा हूँ। एसएसएच एक विकल्प नहीं है। टेलनेट एकमात्र विकल्प है। मैं हाथ से आदेश चला सकता हूं या मैं इसे मेरे लिए करने के लिए एक छोटे से प्रोग्राम का उपयोग कर सकता हूं। लिंक के लिए धन्यवाद। –

+0

निश्चित रूप से यह आपके लिए हुआ होगा कि इस आदमी के पास टेलनेट या एसएसएच का उपयोग कर सर्वर के बारे में कुछ भी कहना नहीं है? बस एक सुराग। –

1

मैं MinimalistTelnet ढूंढने के लिए समाप्त हुआ और इसे मेरे उपयोगों में अनुकूलित किया। मैं अनन्य ** डिवाइस के कारण कोड को भारी रूप से संशोधित करने में सक्षम होने की आवश्यकता समाप्त कर रहा हूं जिसे मैं संलग्न करने का प्रयास कर रहा हूं।

** इस उदाहरण में अद्वितीय मस्तिष्क-मृत के रूप में वैध रूप से व्याख्या किया जा सकता है।

2

यहाँ एक टेलनेट पुस्तकालय और कार्यक्रम एक उदाहरण के रूप में यह उपयोग करता है। सभी स्रोत (लाइब्रेरी स्रोत सहित) लेख के निचले हिस्से में हैं।

उदाहरण एक सिस्को रूटर के लिए एक लॉगिन करता है और विन्यास

http://www.xpresslearn.com/networking/code/csharp-telnet-client

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

ठीक है। मोटा और तैयार और ज्यादातर काम करता है, लेकिन मैं पहले से सुझाव देना चाहता हूं। पढ़ें() यह जांचने के लिए कि क्या ns.Data उपलब्ध है क्योंकि कोई प्रतिक्रिया नहीं हो सकती है, और आप हमेशा के लिए अवरुद्ध हो जाएंगे; पढ़ना जारी रखने के लिए लूप() को लूप के अंदर भी चिपकाएं, क्योंकि आपने एक ही समय में सभी डेटा नहीं पढ़ा होगा। – joedotnot

+0

'tcpClient' फ़ील्ड कहां है? – SuB

संबंधित मुद्दे