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);
}
}
}
參考資料: