プロジェクトでこの種のコードが使用されているのを見ました:
while (1)
{
l_numPkts = pcap_next_ex( m_pcapHandle, &header, &pkt_data);
//do something
memcpy(dst,pkt_data,size);
}
pcap_next_ex が返された後、パケット ステータスは TP_STATUS_KERNEL に設定されます。これは、buf がカーネルに返されたことを意味します。コード:
/* next packet */
switch (handle->md.tp_version) {
case TPACKET_V1:
h.h1->tp_status = TP_STATUS_KERNEL;
..
一部の高速環境では、メモリの問題が発生しますか?
pcap_next / pcap_next_ex を使用する正しい方法は何ですか?