2010-12-01 19:12:33Chris C.S Huang

C#連結Telnet Server

[功能]

以C#語言建立Telnet Session應用程式,傳送command至Telnet Server並接收回傳訊息.

程式碼如下:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.Net.Sockets;
using System.IO;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        TcpClient oClient = new TcpClient();
        NetworkStream ns;
        private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                oClient.Connect("10.1.21.24", 23);
                ns = oClient.GetStream();
                txtResults.Text = read(ns);

            }
            catch (Exception ex)
            {

                txtResults.Text += Environment.NewLine + ex.Message;

                if (oClient.Connected)

                    oClient.Close();

            }

        }

         private string read(NetworkStream ns)

         {

                StringBuilder sb = new StringBuilder();

                if (ns.CanRead)

                 {

                       byte[] readBuffer = new byte[1024];

                       int numBytesRead = 0;

                       do

                       {

                        numBytesRead = ns.Read(readBuffer, 0, readBuffer.Length);

                        //sb.Append(readBuffer[0].ToString);

                        sb.AppendFormat("{0}", Encoding.ASCII.GetString(readBuffer, 0, numBytesRead));

                        sb.Replace(Convert.ToChar(24),' ');

                        sb.Replace(Convert.ToChar(255), ' ');

                        sb.Replace('?', ' ');

                        }

                      while (ns.DataAvailable);

                 }

              return sb.ToString();

         }

         private void write(NetworkStream ns, string message)
         {

             byte[] msg = Encoding.ASCII.GetBytes(message + Environment.NewLine);

             ns.Write(msg, 0, msg.Length);

         }

         private void txtResults_TextChanged(object sender, EventArgs e)
         {

         }

         private void btnLogin_Click(object sender, EventArgs e)
         {

             write(ns, "root");
             //  write(ns, "telnetuser");
             write(ns, Environment.NewLine);

             txtResults.Text += Environment.NewLine + read(ns);

            

             txtResults.Text += Environment.NewLine + read(ns);


            


         }

         private void btnSendCmd_Click(object sender, EventArgs e)
         {
             write(ns, "cd /tmp");
             write(ns, Environment.NewLine);
             txtResults.Text += Environment.NewLine + read(ns);


             write(ns, Environment.NewLine);

             //   txtResults.Text += Environment.NewLine + read(ns);


            
         }

         private void btnDisconnect_Click(object sender, EventArgs e)
         {
             ns.Close();

             oClient.Close();
         }

         private void btnTouch_Click(object sender, EventArgs e)
         {
             write(ns, "touch yuv.out");
             write(ns, Environment.NewLine);
             txtResults.Text += Environment.NewLine + read(ns);
             write(ns, Environment.NewLine);

         }
 
    }
}

 

 

 

參考資料:

http://social.msdn.microsoft.com/Forums/en-US/netfxnetcom/thread/6c3e79ac-c939-418d-bf7b-21bb73a9b7fd