使用C语言将数据写入pcap文件时遇到问题

问题描述 投票:0回答:1

我想在 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);
c udp wireshark pcap libpcap
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.