首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >二进制安全编辑

二进制安全编辑
EN

Stack Overflow用户
提问于 2013-07-18 05:13:14
回答 1查看 656关注 0票数 2

在Redis协议规范中,它提到:

“状态回复不是二进制安全的,不能包含换行符。”字符串/文件是二进制安全的意味着什么?为什么redis中的状态回复不能是二进制安全的?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-18 05:21:32

二进制安全字符串解析器在字符串中的单个字符中考虑所有可能的值0 - 255,该字符串可能不是以null结尾的(它的长度也是已知的)。如果字符串解析器不是二进制安全的,那么它需要一个以null结尾的字符串(字符串末尾的二进制0 )。

通常,字符串解析器不是二进制安全的。许多解析都期望正常的可打印字符和字符串末尾的0。如果这种字符串的末尾没有0,则很容易出现分段错误。

二进制安全解析器可能正在解析任意数据(可能是文本或其他数据)。

编辑:

“字符串/文件是二进制安全的意味着什么?”

  • 它是二进制安全的文本解析器,而不是字符串/文件本身。但是,如果一个字符串被称为二进制安全,我会怀疑这意味着它是一个标准ascii字符的以null结尾的字符串。

“为什么redis中的状态回复不能是二进制安全的?”

  • ,因为检查回复的解析器实现在\r\n的第一个实例结束。这就是解析器计算字符串长度的方法。因此,如果它在回复结束前找到一个\r\n,它将停止解析并忽略之后的所有内容。

除非状态回复需要发送二进制数据,否则它们不需要是二进制安全的。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17710326

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档