pcap_loop()函數是基於回調的原理來進行數據捕獲,這是一種精妙的方法,並且在某些場合中,它是一種很好的選擇。 然而,處理回調有時候並不實用 -- 它會增加程序的複雜度,特別是在擁有多線程的C++程序中。
可以通過直接調用pcap_next_ex() 函數來獲得一個數據包 -- 只有當編程人員使用了 pcap_next_ex() 函數才能收到數據包。
這個函數的參數和捕獲回調函數的參數是一樣的 -- 它包含一個網絡適配器的描述符和兩個可以初始化和返回給用戶的指針 (一個指向 pcap_pkthdr 結構體,另一個指向數據報數據的緩衝)。