haskell - 维护回调函数之间的状态

标签 haskell pcap

改写

我是 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/

相关文章:

linux - Wireshark 与 tcpdump/libpcap 中数据包的不同顺序?

haskell - 如何使用 Stack 和 Haskell Test.Framework 运行单个测试?

haskell - 如何将函数调用的值存储到变量

haskell - Haskell 中的二进制映射

python - 在python中使用dpkt时出错

c++ - IP 头位顺序不清楚

haskell - 了解复杂的类型签名

haskell - Haskell 中令人惊讶的函数签名

c++ - pcap_dump 函数在与 pcap_loop 一起使用时不会被调用,pcap_dispatch 总是返回 0

pcap - 在多个 IP 地址上拆分 pcap