我正在扩展ByteArrayLengthHeaderSerializer以返回tcp消息报头中的长度。问题是套接字上的第一条消息包含一个没有标头的8字节会话。在第一条消息之后,所有消息都将有一个带有长度的报头(以及其他一些字段)。报头的前4个字节将始终是常量值。
我想要读取前4个字节,以确定我是否有一个带有头部或原始sessionId的消息。
如果不是头,那么我将推回4个字节,并返回长度8。
如果它是一个头(前4个字节匹配常量值),那么我将读取头的其余部分,找到头中的长度字段并返回该值。
此外,此应用程序可能正在使用nio。
发布于 2015-07-03 04:54:24
不是直接的;几年前我编写了一个使用PushBackInputStream的自定义反序列化程序,做了类似的事情。
您应该能够编写自定义的反序列化程序;将IS包装在PushBackIS中。如果需要,可以偷看开始并推送回来,然后委托给BALHS,以便使用适当的报头解码这些消息。
https://stackoverflow.com/questions/31193708
复制相似问题