http://msdn.microsoft.com/library/en-us/winsock/winsock/transmitfile_2.asp
# tcl code snippet
proc putfile {port filename} {
set size [file size $filename]
set fp [open $filename]
fconfigure $fp -translation binary
set channel [socket $::dsclient::server $port]
fconfigure $channel -translation binary
puts $channel [list $filename $size $port]
fcopy $fp $channel -size $size
close $fp
close $channel
}