我正在扩展ByteArrayLengthHeaderSerializer以从tcp消息头返回长度。问题是套接字上的第一条消息包含一个没有标头的8字节会话。在第一条消息之后,所有消息都将有一个带有长度的标题(以及其他一些字段)。标头的前4个字节始终是常量值。
我想读取前4个字节,以确定我是否有带标题或原始sessionId的消息。
如果不是标题,那么我会推回4个字节并返回8的长度。
如果是标题(前4个字节与常量值匹配),那么我将读取标题的其余部分,在标题中找到长度字段并返回该值。
此外,此应用程序可能正在使用nio。
答案 0 :(得分:0)
不直接;几年前我通过编写使用PushBackInputStream
的自定义反序列化器来做类似的事情。
您应该能够编写自定义反序列化器;将IS包装在PushBackIS
中。在开始时查看并在需要时回退,然后委派给BALHS
以使用正确的标头解码这些消息。