Sample code for 30+ languages & platforms
Tcl

Socket/SSL/TLS through SOCKS5 / SOCKS4 Proxy

See more Socket/SSL/TLS Examples

Demonstrates how to use the Chilkat Socket/SSL/TLS component/library with a SOCKS5 or SOCKS4 proxy server.

Chilkat Tcl Downloads

Tcl

load ./chilkat.dll

set success 0

# This example requires the Chilkat API to have been previously unlocked.
# See Global Unlock Sample for sample code.

set socket [new_CkSocket]

# To use a SOCKS4 or SOCKS5 proxy, simply set the following
# properties prior to calling Connect.  The connection may be SSL/TLS or 
# non-secure - both will work with a SOCKS proxy.
# The SOCKS hostname may be a domain name or 
# IP address:
CkSocket_put_SocksHostname $socket "www.mysocksproxyserver.com"
CkSocket_put_SocksPort $socket 1080
CkSocket_put_SocksUsername $socket "myProxyLogin"
CkSocket_put_SocksPassword $socket "myProxyPassword"
# Set the SOCKS version to 4 or 5 based on the version
# of the SOCKS proxy server:
CkSocket_put_SocksVersion $socket 5
# Note: SOCKS4 servers only support usernames without passwords.
# SOCKS5 servers support full login/password authentication.

# Connect to port 5555 of 192.168.1.108.
# hostname may be a domain name or IP address.
set hostname "192.168.1.108"
set ssl 0
set maxWaitMillisec 20000
set success [CkSocket_Connect $socket $hostname 5555 $ssl $maxWaitMillisec]
if {$success != 1} then {
    puts [CkSocket_lastErrorText $socket]
    delete_CkSocket $socket
    exit
}

# Set maximum timeouts for reading an writing (in millisec)
CkSocket_put_MaxReadIdleMs $socket 10000
CkSocket_put_MaxSendIdleMs $socket 10000

# The server (in this example) is going to send a "Hello World!" 
# message.  Read it:
set receivedMsg [CkSocket_receiveString $socket]
if {[CkSocket_get_LastMethodSuccess $socket] != 1} then {
    puts [CkSocket_lastErrorText $socket]
    delete_CkSocket $socket
    exit
}

# Close the connection with the server
# Wait a max of 20 seconds (20000 millsec)
set success [CkSocket_Close $socket 20000]

puts "$receivedMsg"

delete_CkSocket $socket