改写
我是 Haskell 的新手。我正在尝试使用网络 pcap 包解析 pcap 文件。
我有字节流作为输入,所以我使用了dispatchBS函数和我自己的回调函数。
我的目标是获得所有回调的串联结果。 [a] 已解析的所有数据包。当dispatchBS 的签名中没有任何内容来维护迄今为止解析的所有数据包的状态时,如何跟踪迄今为止获得的所有数据包?
http://hackage.haskell.org/packages/archive/pcap/0.4.5/doc/html/Network-Pcap.html#t:CallbackBS
最佳答案
例如,您可以使用“loop”函数并提供您自己的回调。此回调必须是 IO 操作,因此一种简单的解决方案是将其数据包参数附加到 IORef 中保存的序列(请参阅 Data.Sequence)。一旦收到足够的数据包,只需读取 IOVar。或者,您可以使用线程和队列做一些更复杂的事情,具体取决于您想要实现的目标。
关于haskell - 维护回调函数之间的状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8873012/