您的位置:首页 > 编程语言 > C#

[C#]SharpSSH-一个可以使用SSH连接的.NET库

2015-03-16 13:46 316 查看
A Secure Shell (SSH) library for .NET

觉得有用,就记录下来了
http://www.tamirgal.com/blog/page/SharpSSH.aspx http://sourceforge.net/projects/sharpssh/?source=typ_redirect
再来个例子供参考

public partial class SSHWnd : Form
{
private SshShell ss = null;
private Stream io = null;
private SshConnectionInfo scInfo;

private static byte[] buffer;
private static int bufSize = 256;
private static AsyncCallback readCallback;

private delegate void addLineDelegate(string s);

public SSHWnd(SshConnectionInfo scInfo)
{
InitializeComponent();

this.scInfo = scInfo;
try
{
ss = new SshShell(scInfo.Host, scInfo.User);
if (scInfo.Pass != null)
{
ss.Password = scInfo.Pass;
}
if (scInfo.IdentityFile != null)
{
ss.AddIdentityFile(scInfo.IdentityFile);
}
ss.Connect(22);
io = ss.GetStream();
buffer = new byte[bufSize];
readCallback = new AsyncCallback(OnCompletedRead);
io.BeginRead(buffer, 0, bufSize, readCallback, null);
}
catch
{
MessageBox.Show("Error!");
}
}

private void OnCompletedRead(IAsyncResult ar)
{
int bytesRead = io.EndRead(ar);

if (bytesRead > 0)
{
String str = Encoding.UTF8.GetString(buffer, 0, bytesRead);
this.Invoke(new addLineDelegate(addLine), new object[]{str});
io.BeginRead(buffer, 0, bufSize, readCallback, null);
}
}

void addLine(string s)
{
textBox1.AppendText(s);
}

private void SSHWnd_FormClosing(object sender, FormClosingEventArgs e)
{
if (ss.Connected)
{
io.Close();
ss.Close();
}
}

private void button1_Click(object sender, EventArgs e)
{
if (textBox2.Text != "")
{
try
{
StreamWriter sw = new StreamWriter(io);
sw.Write(textBox2.Text);
sw.Write('\n');
sw.Flush();
}
catch
{
MessageBox.Show("Terminated yet!");
this.Close();
}

textBox2.Text = "";
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐