我有一个像聊天一样工作的程序
客户端和服务器通过2个TCP套接字连接,一个用于传入消息,另一个用于传出消息
有时消息可能非常大(例如2 MB的文本),所以我想在通过频道发送之前压缩它们。
问题是我不知道如何找到压缩消息的开头和结尾
现在我使用两个特殊字符来查找消息的开始和结束,但是使用压缩可能会出现错误。
可能有一种压缩不能使用某些特定的字节? 我使用C#来打开和管理套接字,所以我需要一个在windows下工作的压缩。
答案 0 :(得分:1)
追加消息的开头长度。之后你只需要读取长度,然后获得所需的字节数 它看起来像:
|长度|数据| .. | .. |长度|数据| .. | .. | .. |
更准确地说
| 3 | 26 | 125 | 36 | 4 | 12 | 45 | 16 | 34 |
3和4的长度。
答案 1 :(得分:0)
你只需要一个逃避计划。
在接收方:
另一个答案中建议的长度字前缀的问题是,如果不先进行压缩就无法知道长度,这会花费时间和空间。