如果需要尺寸,我看到两种方法来获得它:
- 将其与加密数据一起显式发送。
- 在服务器端缓冲所有数据,直到完全接收。跟踪您收到的字节数。
首先,你可以尝试这样的事情:
<number of bytes to follow><separator symbol><message data>
其次要求您能够正确检测到消息的结尾。您可以通过特定的消息结束序列检测到这一点。但是,您需要在消息中转义这样的序列(如果出现)。类似于在 C/C++/Java/C# 中如何转义字符...
另一种方法可能是在消息完成后关闭连接。但是,您需要检测连接是否定期关闭或是否断开,因为在后一种情况下,您不能尝试解码...
你甚至可以结合这两种方法:
<message start sequence>
<number of bytes to follow>
<separator symbol>
<encrypted data>
<message end sequence>
消息开始序列和消息结束序列都必须转义。如果您在加密数据中检测到消息开始序列,或者在读取字节数之前检测到消息结束序列,那么您就知道在服务器端出现了严重错误......