1

使用 ruby​​ 1.9 和 latest gem install pcap+ fix 进行编译(将->ptr/转换->len_PTR/ _LEN),我发现在做了简单的代码之后:

require 'pcap'
cap = Pcap::Capture.open_offline('1.dmp')
cap.each { |pkt| p pkt.src; }

exit

Pcap gem 不离开 block 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>.
有没有什么办法解决这一问题?

PS 1.dmp 文件使用tcpdump -w 1.dmp.

4

1 回答 1

1

Pcap::Capture#each 或 Pcap::Capture#each_packet 采用可选的计数参数。如果为-1,则循环直到EOF。

您可以尝试向每个人传递一个数字,看看会发生什么。

cap.each_packet(4) {|pkt|p pkt.src}

如果挂起,则扩展代码中可能存在问题。

于 2010-01-15T03:09:38.170 回答