Imports System Imports System.Drawing Imports System.Collections Imports System.ComponentModel Imports System.Windows.Forms Imports System.Data Imports System.Net Imports System.Net.Sockets Imports System.Text Imports System.Threading Imports SBSSHClient Imports SBSSHCommon Imports SBSSHConstants Imports SBSSHKeyStorage Imports SBUtils 'Imports QueryDialog Public Class frmMain Private ClientSocket As Socket Private SSHClient As TElSSHClient Private SSHTunnel As TElShellSSHTunnel Private SSHTunnelList As TElSSHTunnelList Private SSHTunnelConnection As TElSSHTunnelConnection Private boolConnected As Boolean Private KeyStorage As TElSSHMemoryKeyStorage Private ClientSocketReceiveBuf(0) As Byte Private ClientSocketReceiveBufHasData As Boolean Private Sub Init() SSHClient = New TElSSHClient SSHTunnel = New TElShellSSHTunnel SSHTunnelList = New TElSSHTunnelList SSHTunnel.TunnelList = SSHTunnelList SSHClient.TunnelList = SSHTunnelList KeyStorage = New TElSSHMemoryKeyStorage SSHClient.KeyStorage = KeyStorage End Sub Private Sub btnConnect_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnConnect.Click SSHClient.UserName = txtUserName.Text SSHClient.Password = txtPassWord.Text SSHClient.AuthenticationTypes = SSHClient.AuthenticationTypes Dim hostadd As IPAddress = Dns.Resolve(txtHost.Text).AddressList(0) Dim epHost As New IPEndPoint(hostadd, Convert.ToInt32("22", 10)) Dim tSocket As Socket = New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp) ClientSocket.BeginConnect(epHost, New AsyncCallback(AddressOf clientSocket_OnOpenConnection), Nothing) btnConnect.Text = "Disconnect" End Sub Private Sub clientSocket_OnOpenConnection(ByVal ar As IAsyncResult) Try ClientSocket.EndConnect(ar) ClientSocketReceiveBufHasData = False ClientSocket.BeginReceive(ClientSocketReceiveBuf, 0, ClientSocketReceiveBuf.Length, 0, New AsyncCallback(AddressOf clientSocket_OnReceive), Nothing) SSHClient.Open() txtTerm.Text = "Client socket connected" Catch ex As Exception Reset() End Try End Sub Private Sub clientSocket_OnReceive(ByVal ar As IAsyncResult) Try Dim i As Integer = ClientSocket.EndReceive(ar) If i > 0 Then ClientSocketReceiveBufHasData = True End If While True SSHClient.DataAvailable() If ClientSocketReceiveBufHasData Then Thread.Sleep(1) Else ClientSocket.BeginReceive(ClientSocketReceiveBuf, 0, ClientSocketReceiveBuf.Length, 0, New AsyncCallback(AddressOf clientSocket_OnReceive), Nothing) Exit While End If End While Catch ex As Exception Reset() End Try End Sub End Class