我有两个用C语言编写的程序,一个程序写入pcap文件,第二个程序同时读取它。对于写入,我使用以下代码
while(j < 100000)
{
pcount = pcap_dispatch(p,2000,&pcap_dump,(u_char *)pd);
j = j+pcount;
printf("Got %d packets , total packets %d\n",pcount,j);
}
为了解码数据包,我使用以下代码
while( (returnValue=pcap_next_ex(pcap,&header,&data)) >= 0)
{
printf("Packet # %d ",++packetCount);
printf("return value %d\n",returnValue);
}
当我单独运行程序时,即当我停止写入pcap文件时,它会完美地解码数据包。但是当我同时运行两个程序时,解码器不会解码所有数据包。如果我得到100个数据包,解码器将只显示50-60个解码数据包。
任何帮助将不胜感激。
答案 0 :(得分:0)
在我看来,只要作者在pcap文件中写入,读者的文件就不会得到更新。这可能是由于读取器文件指针未刷新的原因,即读取文件的非更新版本。 希望它会对你有所帮助。
答案 1 :(得分:0)
这就是管道的用途。我建议像
这样的东西pcap_writer -w - | tee permanent-file.pcap | pcap_reader -r -
其中pcap_writer
和pcap_reader
是您的计划。通过这种方式,您可以根据需要创建可以以不同方式组合的内容。