我正在使用
或者
Network.Pcap
(pcap)进行网络捕获,并计划使用Net.PacketParsing
(network-house)进行一些检查。为此,看起来我必须将我的数据包解析放在任何一个中:Pcap.Callback :: PktHdr -> Ptr Word8 -> IO ()
或者
Pcap.CallbackBS :: PktHdr -> ByteString -> IO ().
您可以将数据包作为“Ptr Word8”或“ByteString”进行处理。在数据包解析方面,我有以下内容:
Net.Packet.toInPack :: UArray Int Word8 -> InPacket
要解析数据,需要使用InPacket
类型。因此,我需要将'Ptr'或'ByteString'转换为'UArray'——可以纯粹地转换或在IO中进行转换。我想我可以将ByteString
解包成[Word8]
,然后再转换为UArray
,但似乎必须有更好的方法。
我还担心我的库选择。我以前使用过network-house,并发现它非常好,但它已经过时了,而且使用的是UArray,这本身似乎有点古老。因此,欢迎提供更好的起点建议。
runRW#
的类型。 - András Kovács