我想在 for 循环中定期向 .pcap 文件写入一个具有一个浮点成员的结构。我希望在循环迭代时生成的 .pcap 文件中包含尽可能多的 UDP 数据包。
我已经构建了代码来完成相同的任务,但是,当我尝试加载时。在 Wireshark 中查看 pcap 文件时,出现错误。我收到的错误消息是“捕获的文件似乎在数据包中间被剪短了”。
我正在使用的代码如下所示。有人可以帮忙吗?
const char* filename = "data.pcap";
pcap_t* pcap_handle = pcap_open_dead(DLT_RAW, 65535);
pcap_dumper_t* pcap_file_3 = pcap_dump_open(pcap_handle, filename);
void saveData(float data, pcap_dumper_t* pcap_file_1) {
struct timeval tv;
gettimeofday(&tv, NULL);
/* packet header */
struct pcap_pkthdr packet_header;
packet_header.ts = tv;
packet_header.caplen = packet_header.len = sizeof(data) + sizeof(packet_header);
pcap_dump((u_char*)pcap_file_1, &packet_header, (const u_char*)&data);
}
/* for loop which sends the data to the saveData function */
for(size_t i{0U}; i < 300; i++)
{
CODE TO COMPUTE estimated_val
saveData(estimated_val, pcap_file_3);
}
pcap_dump_close(pcap_file_3);
pcap_close(pcap_handle);