使用ruby 1.9和最新的gem install pcap
+修补程序进行编译(将->ptr
/ ->len
转换为_PTR
/ _LEN
),我发现做完简单后代码:
require 'pcap'
cap = Pcap::Capture.open_offline('1.dmp')
cap.each { |pkt| p pkt.src; }
exit
Pcap gem不会离开块cap.each
,即输出:
...
213.248.106.202
192.168.1.50
213.248.106.202
192.168.1.50
^C
^C
^C
^C
^C
只有kill -s KILL <process_id>
才能杀死进程
有什么方法可以解决这个问题吗?
P.S。 1.dmp文件使用tcpdump -w 1.dmp
生成。
答案 0 :(得分:1)
Pcap :: Capture#each或Pcap :: Capture#each_packet采用可选的count参数。如果它是-1,它将循环直到EOF。
您可以尝试将数字传递给每个人,看看会发生什么。
cap.each_packet(4) {|pkt|p pkt.src}
如果挂起,则扩展程序代码中可能存在问题。