Sample code for 30+ languages & platforms
Tcl

Socket Send and Receive BinData

Demonstrates the Chilkat Socket ReceiveBdN and SendBd methods.

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 sock [new_CkSocket]

# --------------------------------------------------------------------
# This example uses the public TCP echo service at https://tcpbin.com/
# --------------------------------------------------------------------

set useTls 0
set port 4242
set maxWaitMs 5000
set success [CkSocket_Connect $sock "tcpbin.com" $port $useTls $maxWaitMs]
if {$success == 0} then {
    puts [CkSocket_lastErrorText $sock]
    delete_CkSocket $sock
    exit
}

# Wait a max of 2 seconds for a response..
CkSocket_put_MaxReadIdleMs $sock 2000

# Send 26 bytes contained in a Chilkat BinData
set bdToSend [new_CkBinData]

set i 0
set byteVal 65
while {$i < 26} {
    CkBinData_AppendByte $bdToSend $byteVal
    set byteVal [expr $byteVal + 1]
    set i [expr $i + 1]
}
# Send the contents of the BinData
# Pass zero's in the 2nd and 3rd arguments to send the entire contents of the BinData.
CkSocket_SendBd $sock $bdToSend 0 0

# The tcpbin.com echo server only echoes after receiving an LF (linefeed char)
CkSocket_SendByte $sock 10

# The echo server will echo back whatever is sent to it.
# We should be able to read the same bytes back..
set bdRecv [new_CkBinData]

# Receive the 26 bytes previously sent, plus the LF char.
set success [CkSocket_ReceiveBdN $sock 27 $bdRecv]
if {$success == 0} then {
    puts [CkSocket_lastErrorText $sock]
    delete_CkSocket $sock
    delete_CkBinData $bdToSend
    delete_CkBinData $bdRecv
    exit
}

# Show the contents of bdRecv in hex format
puts [CkBinData_getEncoded $bdRecv hex]

# Output:  4142434445464748494A4B4C4D4E4F505152535455565758595A0A

delete_CkSocket $sock
delete_CkBinData $bdToSend
delete_CkBinData $bdRecv