【发布时间】:2020-08-20 13:04:56
【问题描述】:
我正在使用套接字从 TCL 中的 TCP 端口读取数据。消息不以任何换行符结尾,但它们包含一个包含数据字节数的标头。
我有以下代码从套接字(16bit little endian)读取两个字节的数据并将其转换为一个整数,然后我可以在循环中使用它来读取其余数据:
binary scan [read $Socket 2] s* length
在这种情况下,$Socket 是我的套接字,它已被配置为使用二进制编码。
这很好用,除非高字节或低字节是 0x0D。看来 TCL 将 0x0D 和 0x0A 都读取为“\n”,然后默认为 0x0A,因此代码确实可以正常工作。例如 13 读作 10。如何阻止这种情况发生?
【问题讨论】: