这不是我第一次遇到这个问题,但我还没有找到一个非常好的解决方案,所以我想我会问别人如何处理它。
许多协议包括消息本身内的消息大小(或其一部分)。例如,现在我正在查看 ModbusTCP ,其中字节5和6应该保留消息剩余部分的长度。是否有一些优雅而优雅的方式来解决这个问题?
直接构建器看起来像这样(使用来自 grain 的Serialize
):
put (ModTcpRequestFrame tid pid uid req)= do
putWord16be tid
putWord16be pid
putWord16be len
putWord8 uid
put req
where
len = .... -- what to put here?
可以吗?