2014-10-12 27 views
-1

有没有办法从InputStream打开离线Pcap而不是从本地文件打开?JNetPcap从InputStream打开pcap

在文档中,它表示您可以使用pcap_fopen_offline()从开放式流打开Pcap,但我不知道如何使用它。

+0

该文档是否附带示例?至少,这个函数的签名是什么?它可能使用文件句柄,而不是'std :: ifstream'。 – 2014-10-12 09:50:13

回答

0

pcap_fopen_offline(3)是一个C API,JNetPCap作为一个包装器(你应该注意到这个事实,因为命名约定与Java API截然不同!)除非你用C编写,否则你不能直接访问它JNetPCap(也许你可以用JNI/JNA访问它,但这与C编码没什么两样)

此外,当关于C API的文档谈论“流”时,它几乎总是C术语中的“文件流” 。它不一定意味着来自文件系统中的文件的数据流,但基本上需要流利地使用C来使用除STDIN/OUT或文件系统中的文件以外的其他任何内容。我很快浏览了JNetPCap的Javadoc,但我不认为它可以为您将一般的InputStream转换为C的文件流。

+0

嗨,谢谢,所以如果我从数据库中获取文件作为InputStream,我将不得不将它写入磁盘然后打开它?或者有什么办法可以解决这个问题? – 2014-10-12 16:55:50

+0

@AmirRossert我担心这是唯一的方法。我在'jnetpcap-src-1.4.r1425-1'的源代码目录下'''''''''''''' JNetPCap只调用'pcap_open_offline()'。 – nodakai 2014-10-12 17:31:56