【问题标题】:JNetPcap open pcap from InputStreamJNetPcap 从 InputStream 打开 pcap
【发布时间】:2014-12-07 01:17:08
【问题描述】:

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

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

【问题讨论】:

  • 文档不附带样本吗?至少,这个函数的签名是什么?它可能使用文件句柄,而不是std::ifstream

标签: c++ inputstream libpcap jnetpcap


【解决方案1】:

pcap_fopen_offline(3) 是一个 C API,其中 JNetPCap 作为包装器工作(您应该注意到这一事实,因为命名约定与 Java API 非常不同!)除非您使用 C 编写代码,否则您无法直接访问它没有 JNetPCap(也许你可以使用 JNI/JNA 访问它,但这与 C 中的编码没有什么不同)

此外,当有关 C API 的文档谈到“流”时,它几乎总是 C 术语中的“文件流”。它不一定意味着来自文件系统中文件的数据流,但您基本上需要精通 C 才能使用除 STDIN/OUT 或文件系统中的文件之外的任何东西。我快速浏览了 JNetPCap 的 Javadoc,但我认为它无法为您完成将通用的 InputStream 转换为 C 文件流的工作。

【讨论】:

  • 嗨,谢谢,所以如果我从数据库中获取文件作为 InputStream,我将不得不将它写入磁盘然后打开它?或者有什么办法可以解决这个问题?
  • @AmirRossert 恐怕这是唯一的方法。我grepped for pcap_fopen_offlinejnetpcap-src-1.4.r1425-1 的源目录中,徒劳无功。 JNetPCap 只调用pcap_open_offline()
猜你喜欢
  • 2016-02-15
  • 2014-08-27
  • 2014-10-29
  • 1970-01-01
  • 2019-04-14
  • 2014-07-07
  • 1970-01-01
  • 1970-01-01
  • 2013-05-20
相关资源
最近更新 更多