测验:找回消失的消息边界
调用两次 send 后,需要调用几次 recv?
- 总是只需一次就能收到两个正文
- 取决于收到的字节和帧状态
- 总是两次,边界就会得到保留
- 有标头时不需要调用 recv
UTF-8 字符串的长度标头应写入什么?
- 屏幕上显示的字符数
- 字符串对象占用的内存大小
- 标头与正文相加后的长度
- 编码后正文的字节数
完整帧之后还剩下下一个标头的 2 个字节时,应怎么做?
- 将剩余内容保存在同一个 Decoder 中
- 把它附加到当前正文后再返回
- 丢弃剩余内容,等待下一次调用
- 与另一个连接的标头合并
feed 的结果 [] 与 [b""] 有什么区别?
- 两者都表示连接已断开
- 两者都是错误数据,因此应抛出异常
- 分别表示未完成,以及一条长度为 0 的消息
- 两者都可以忽略,并且不会影响顺序
收到 3 个标头字节后遇到 EOF,应怎么处理?
- 作为长度为 0 的正文处理
- 作为未完成帧错误处理
- 因为是正常结束,所以丢弃剩余内容
- 补 0 以完成标头
哪种方式适合用于解析器的分割回归测试?
- 期望 recv 总是返回 4 个字节
- 在本地成功一次就结束测试
- 每次 send 之间都加入相同的 sleep
- 在所有分割点提供同一个帧