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