FoxPro Examples

ChilkatHOMEAndroid™ASPVisual BasicVB.NETC#iOS (IPhone)Objective-CC++CMFCDelphiFoxProJavaPerl
PHP ExtensionPHP ActiveXPythonPowerShellRubySQL ServerVBScript

Visual FoxPro Examples

Bounced Mail
Bz2
Character Encoding
CSV
Digital Certificates
Digital Signatures
Email
Email Object
FTP
HTML Conversion
HTTP
IMAP
Encryption
MHT / HTML Email
POP3
RSA
S/MIME
Socket
Spider
SFTP
SMTP
SSH
SSH Key
SSH Tunnel
String
Tar
Upload
XML
XMP
Zip Compression
Self-Extractor

More Examples...
Amazon S3
DKIM / DomainKey
NTLM
RSS
Atom
Byte Array
Service
PPMD
Deflate
DH Key Exchange
DSA
FileAccess
Bzip2
LZW

 

Non-Chilkat Links
Text and String Handling

SSH Tunnel (Port Forwarding via direct-tcpip channel)

Demonstrates how to create an SSH tunnel to a remote hostname:port via a direct-tcpip channel.

Download Chilkat 32-bit SSH / SFTP ActiveX (.msi)

Download All 32-bit Chilkat ActiveX Components (.zip)

Download All 64-bit Chilkat ActiveX Components (.zip)

LOCAL loSsh
LOCAL lnSuccess
LOCAL lcHostname
LOCAL lnPort
LOCAL lnChannelNum
LOCAL lcHttpReq
LOCAL lnCaseSensitive
LOCAL lcMatchStr
LOCAL lcResponseHeader
LOCAL lnNumBytesRead
LOCAL lnPollTimeoutMs
LOCAL lcHtmlBody

*  Important: It is helpful to send the contents of the
*  ssh.LastErrorText property when requesting support.

loSsh = CreateObject('Chilkat.Ssh')

*  Any string automatically begins a fully-functional 30-day trial.

lnSuccess = loSsh.UnlockComponent("Anything for 30-day trial")
IF (lnSuccess <> 1) THEN
    =MESSAGEBOX(loSsh.LastErrorText)
    QUIT
ENDIF

*  Connect to an SSH server:

*  Hostname may be an IP address or hostname:
lcHostname = "192.168.1.117"
lnPort = 22

lnSuccess = loSsh.Connect(lcHostname,lnPort)
IF (lnSuccess <> 1) THEN
    =MESSAGEBOX(loSsh.LastErrorText)
    QUIT
ENDIF

*  Wait a max of 5 seconds when reading responses..
loSsh.IdleTimeoutMs = 5000

*  Authenticate using login/password:
lnSuccess = loSsh.AuthenticatePw("chilkat","myPassword")
IF (lnSuccess <> 1) THEN
    =MESSAGEBOX(loSsh.LastErrorText)
    QUIT
ENDIF

*  Open a direct-tcpip channel.  We want the SSH server to connect
*  to www.chilkatsoft.com, port 80 (i.e. the web server).
*  Data sent through the SSH tunnel is forwarded to the remote
*  host:port.  (Note: The remote host:port does not need to be
*  a web server.  It can be anything.  It can be your own
*  customer application server that listens on a port, or any
*  other type of server.)
*  When we read from the SSH channel, we'll be reading data
*  sent from the remote host:port (i.e. the web server in this
*  example).

lnChannelNum = loSsh.OpenDirectTcpIpChannel("www.chilkatsoft.com",80)
IF (lnChannelNum < 0) THEN
    =MESSAGEBOX(loSsh.LastErrorText)
    QUIT
ENDIF

*  Build a simple HTTP GET request for http://www.chilkatsoft.com/xyz.html

lcHttpReq = "GET /xyz123.html HTTP/1.1\r\nHost: www.chilkatsoft.com\r\n\r\n"

*  Send the HTTP request:
lnSuccess = loSsh.ChannelSendString(lnChannelNum,lcHttpReq,"ansi")
IF (lnSuccess <> 1) THEN
    =MESSAGEBOX(loSsh.LastErrorText)
    QUIT
ENDIF

*  Get the HTTP response.
*  First read the HTTP response header which ends with a double CRLF.
*  Calling ChannelReceiveUntilMatch will receive until match string is seen,
*  or until a timeout occurs (IdleTimeoutMs property).  ChannelReceiveUntilMatch
*  may read beyond the match string, but it will stop reading as soon as the match
*  string is seen.

lnCaseSensitive = 0

lcMatchStr = "\r\n\r\n"
lnSuccess = loSsh.ChannelReceiveUntilMatch(lnChannelNum,lcMatchStr,"ansi",lnCaseSensitive)
IF (lnSuccess <> 1) THEN
    =MESSAGEBOX(loSsh.LastErrorText)
    QUIT
ENDIF

*  Extract the HTTP header from the receive buffer.
*  (GetReceiveTextS extracts up to and including the match string from the receive buffer)

lcResponseHeader = loSsh.GetReceivedTextS(lnChannelNum,lcMatchStr,"ansi")
? "---- HTTP Response Header ----"
? lcResponseHeader

*  Now get the body of the HTTP response (this is the HTML content
*  of http://www.chilkatsoft.com/xyz.html
*  It's possible we've already received the entire HTTP response in the
*  call to ChannelReceiveUntilMatch.  Therefore, we'll poll for any remaining data
*  and wait a max of .2 seconds.

lnPollTimeoutMs = 200
lnNumBytesRead = loSsh.ChannelPoll(lnChannelNum,lnPollTimeoutMs)
*  We're not checking for an error here.
*  A return value of -2 means that no data was available and the poll simply timed out (not an error)
*  A return value of -1 indicates an error.
*  A return value greater than 0 indicates that additional data was received.

? "---- HTML BODY ----"

*  Extract the remainder of the accumulated data in the internal receive buffer.
*  This should be our HTML body:

lcHtmlBody = loSsh.GetReceivedText(lnChannelNum,"ansi")
? lcHtmlBody

*  Close the channel:
lnSuccess = loSsh.ChannelSendClose(lnChannelNum)
IF (lnSuccess <> 1) THEN
    =MESSAGEBOX(loSsh.LastErrorText)
    QUIT
ENDIF

*  Disconnect
loSsh.Disconnect()

© 2000-2010 Chilkat Software, Inc. All Rights Reserved.

Mail Component · .NET Email Component · ASP Mail Component · XML Parser