2016-12-29 8 views
0

に送信されましたが、受信側にfconfigure $s -translation binaryというTclサーバーソケットが設定されていても、メッセージの最後のバイトとして0x0A(LF)が返されます。 それを避ける方法は?LFのデータがソケット

EDIT: バイナリデータに進文字列を変換し、それを送信するコード:tm_packetが進値のシーケンスである

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 
} 

は、例えば:10b9a5

10b9a50aがで受信されたクライアント側ではその場合。

+0

は、一般的には、あなたは、両端が通信プロトコルに同意を確認する必要があります。一方の端がデータをテキストとして扱い、LFを付加している場合は、プロトコルに不一致があります。 –

+0

@BradLanam私は同意します。私はちょうどソースの終わりにLFを追加したくないです。 – bLAZ

+1

'flush'は例外をスローすることもできます。実際は' puts'よりもそうです。 – EJP

答えて

1

putsコマンドは自動的に改行を出力に追加します。

-nonewlineオプションを使用し、バイナリデータでこれを防止するために:

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

参考文献:puts

+0

ああ、正しい、それだった!どうもありがとう! – bLAZ

関連する問題