Chilkat HOME .NET Core C# Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi ActiveX Delphi DLL Go Java Lianja Mono C# Node.js Objective-C PHP ActiveX PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(AutoIt) TCP Socket through SSH Tunnel (Port Forwarding)Demonstrates using Chilkat Socket to communicate to a TCP service through an SSH tunnel. This example will connect to an NIST time server and (using the old Time Protocol (RFC 868)), will read the current GMT time. Note: This is not necessarily a recommended means for getting the current date/time. The most commonly used time protocol is the Network Time Protocol (RFC-1305). The intent of this example is to show how TCP communications can occur through an SSH tunnel.
; This example requires the Chilkat API to have been previously unlocked. ; See Global Unlock Sample for sample code. $oTunnel = ObjCreate("Chilkat.Socket") Local $sshHostname = "sftp.example.com" Local $iSshPort = 22 ; Connect to an SSH server and establish the SSH tunnel: Local $bSuccess = $oTunnel.SshOpenTunnel($sshHostname,$iSshPort) If ($bSuccess <> True) Then ConsoleWrite($oTunnel.LastErrorText & @CRLF) Exit EndIf ; Authenticate with the SSH server via a login/password ; or with a public key. ; This example demonstrates SSH password authentication. $bSuccess = $oTunnel.SshAuthenticatePw("mySshLogin","mySshPassword") If ($bSuccess <> True) Then ConsoleWrite($oTunnel.LastErrorText & @CRLF) Exit EndIf ; OK, the SSH tunnel is setup. Now open a channel within the tunnel. ; Once the channel is obtained, the Socket API may ; be used exactly the same as usual, except all communications ; are sent through the channel in the SSH tunnel. ; Any number of channels may be created from the same SSH tunnel. ; Multiple channels may coexist at the same time. ; Connect to an NIST time server and read the current date/time Local $oChannel Local $iMaxWaitMs = 4000 Local $bUseTls = False $oChannel = $oTunnel.SshOpenChannel("time-c.nist.gov",37,$bUseTls,$iMaxWaitMs) If ($oTunnel.LastMethodSuccess = False) Then ConsoleWrite($oTunnel.LastErrorText & @CRLF) Exit EndIf ; The time server will send a big-endian 32-bit integer representing ; the number of seconds since since 00:00 (midnight) 1 January 1900 GMT. ; The ReceiveInt32 method will receive a 4-byte integer, but returns ; True or False to indicate success. If successful, the integer ; is obtained via the ReceivedInt property. Local $bigEndian = True $bSuccess = $oChannel.ReceiveInt32($bigEndian) If ($bSuccess <> True) Then ConsoleWrite($oChannel.LastErrorText & @CRLF) Exit EndIf $oDt = ObjCreate("Chilkat.CkDateTime") $oDt.SetFromNtpTime($oChannel.ReceivedInt) ; Show the current local date/time Local $bLocalTime = True ConsoleWrite("Current local date/time: " & $oDt.GetAsRfc822($bLocalTime) & @CRLF) ; Close the SSH channel. $bSuccess = $oChannel.Close($iMaxWaitMs) If ($bSuccess <> True) Then ConsoleWrite($oChannel.LastErrorText & @CRLF) Exit EndIf ; It is possible to create a new channel from the existing SSH tunnel for the next connection: ; Any number of channels may be created from the same SSH tunnel. ; Multiple channels may coexist at the same time. $oChannel = $oTunnel.SshOpenChannel("time-a.nist.gov",37,$bUseTls,$iMaxWaitMs) If ($oTunnel.LastMethodSuccess = False) Then ConsoleWrite($oTunnel.LastErrorText & @CRLF) Exit EndIf ; Review the LastErrorText to see that the connection was made via the SSH tunnel: ConsoleWrite($oTunnel.LastErrorText & @CRLF) ; Close the connection to time-a.nist.gov. This is actually closing our channel ; within the SSH tunnel, but keeps the tunnel open for the next port-forwarded connection. $bSuccess = $oChannel.Close($iMaxWaitMs) If ($bSuccess <> True) Then ConsoleWrite($oChannel.LastErrorText & @CRLF) Exit EndIf ; Finally, close the SSH tunnel. $bSuccess = $oTunnel.SshCloseTunnel() If ($bSuccess <> True) Then ConsoleWrite($oTunnel.LastErrorText & @CRLF) Exit EndIf ConsoleWrite("TCP SSH tunneling example completed." & @CRLF) |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.