即使我在接收端配置了fconfigure $s -translation binary
的Tcl服务器套接字,我也会收到0x0A(LF)作为消息的最后一个字节。
如何避免呢?
编辑: 将十六进制字符串转换为二进制数据并将其发送的代码:
set tm_packet [binary format H* $tm_packet]
global sock
if {$sock != 0} {
if {[catch {puts $sock $tm_packet} result]} {
syslog "ErrorMsg: $result"
close $sock
set sock 0
}
flush $sock
}
其中tm_packet
是十六进制值序列,例如:10b9a5
在这种情况下,在客户端10b9a50a
收到。
答案 0 :(得分:1)
puts
命令会自动在输出中附加换行符。
要使用二进制数据来防止这种情况,请使用-nonewline
选项:
if {[catch {puts -nonewline $sock $tm_packet} result]} {
参考文献:puts