为什么 ruby​​ 的(版本 1.9)pcap gem 在访问后挂起?

发布于 2024-08-17 13:21:37 字数 658 浏览 4 评论 0原文

使用 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

吝吻 2024-08-24 13:21:37

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

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

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

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

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.

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

If that hangs, there might be an issue in the extension code.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文