Tcl
Tcl
Socket Send and Receive BinData
Demonstrates the Chilkat Socket ReceiveBdN and SendBd methods.Chilkat Tcl Downloads
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