我目前正在编写代码以将数据传输到远程供应商。传输将通过 TCP 套接字进行。我遇到的问题是数据是可变长度的,并且没有框架或大小标记。发送数据没问题,但我不确定处理返回数据的最佳方式。
数据由不同的“消息”组成,但它们没有固定的大小。每条消息都有一个 8 或 16 字节的位图,指示该消息中包含哪些组件。有些组件是固定长度的,有些是可变的。每个可变长度组件都有一个用于整个消息的该部分的大小前缀。
当我第一次打开套接字时,我将发送消息,每个消息都应该收到响应。当我开始读取数据时,我应该在消息的开头。我需要解释位图以了解包含哪些消息字段。当数据到达时,我必须验证位图指示的每个字段是否存在并且大小正确。
一旦我阅读了所有第一条消息,下一条就开始了。我担心的是,如果传输在消息中途中断,我如何才能恢复并正确找到下一条消息的开始?
我将不得不模拟连接失败,并且我的代码需要在取消该消息之前自动重试一定次数。
我无法控制远程端的代码,也无法将帧字节或大小前缀添加到消息中。
最佳实践、设计模式或处理此问题的最佳方式的想法都受到欢迎。