为什么 ruby 的(版本 1.9)pcap gem 在访问后挂起?
使用 ruby 1.9 和最新的 gem install pcap
+ 修复编译(将 ->ptr
/->len
转换为 _PTR< /code>/
_LEN
),我发现在做了简单的代码后:
require 'pcap'
cap = Pcap::Capture.open_offline('1.dmp')
cap.each { |pkt| p pkt.src; }
exit
Pcap gem not left block cap.each
,即输出:
...
213.248.106.202
192.168.1.50
213.248.106.202
192.168.1.50
^C
^C
^C
^C
^C
And process can be dead only by kill -s KILL
。
有什么方法可以解决这个问题吗?
使用 tcpdump -w 1.dmp
生成 PS 1.dmp 文件。
Using ruby 1.9 and latest gem install pcap
+ fix for compiling (convert ->ptr
/->len
to _PTR
/_LEN
), i found that after doing simple code:
require 'pcap'
cap = Pcap::Capture.open_offline('1.dmp')
cap.each { |pkt| p pkt.src; }
exit
Pcap gem not leaving block cap.each
, i.e. output:
...
213.248.106.202
192.168.1.50
213.248.106.202
192.168.1.50
^C
^C
^C
^C
^C
And process can be killed only by kill -s KILL <process_id>
.
Is there any way to fix this?
P.S. 1.dmp file generated using tcpdump -w 1.dmp
.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
Pcap::Capture#each 或 Pcap::Capture#each_packet 采用可选的计数参数。如果为-1,则循环直到EOF。
您可以尝试向每个人传递一个数字,看看会发生什么。
如果挂起,则扩展代码可能存在问题。
Pcap::Capture#each or Pcap::Capture#each_packet takes an optional count argument. If it is -1, it loops until EOF.
You could try passing a number to each and see what happens.
If that hangs, there might be an issue in the extension code.