发送到套接字的数据中的LF

时间:2016-12-29 15:11:18

标签: sockets tcl

即使我在接收端配置了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收到。

1 个答案:

答案 0 :(得分:1)

puts命令会自动在输出中附加换行符。

要使用二进制数据来防止这种情况,请使用-nonewline选项:

if {[catch {puts -nonewline $sock $tm_packet} result]} {

参考文献:puts