我正在编写一个应用程序来监听网络接口,选择一些帧,编辑它们然后将它们保存到磁盘。与tshark和tcpdump非常相似。
我的代码是用C ++编写的
但是,我想以pcap格式保存我的数据包,我找不到接受以太网帧(在内存中)并将它们保存到.pcap文件的C / C ++库。
解决方案更新:
#include <pcap.h>
pcap_t* p = pcap_open_dead(DLT_EN10MB, 65535);
const std::string pcap_file_name = getPcapName();
pcap_dumper_t* dumper = pcap_dump_open(p, pcap_file_name.c_str());
pcap_pkthdr h;
h.caplen = packet_len;
h.len = packet_len;
pcap_dump((u_char*)dumper, &h, packet);
pcap_dump_close(dumper);
pcap_close(p);
答案 0 :(得分:2)
为什么不能直接在C ++代码中使用WinPcap / libpcap? 这些是C库,所以你应该能够链接它们。
在windoze下的unix或winpcap下使用libpcap。