0
即使我在接收端配置了使用fconfigure $s -translation binary
的Tcl服务器套接字,我也会收到0x0A(LF)作为消息的最后一个字节。 如何避免它?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
在接收那种情况。
一般来说,你必须确保两端的通信协议达成一致。如果一端将数据视为文本并附加一个LF,则您在协议中存在分歧。 –
@BradLanam我同意。我只是不想在源端添加一个LF。 – bLAZ
'flush'也可以抛出异常,实际上它比'puts'更有可能。 – EJP