Sha256: 01e16320f76048b795c37bc296b3f15112eb93c9b1b724d20dd6e2dfe967836f

Contents?: true

Size: 1.02 KB

Versions: 4

Compression:

Stored size: 1.02 KB

Contents

# encoding : utf-8

require 'diy/ext/capture_wrapper'

module DIY
  class Live
    def initialize(device_name)
      DIY::Logger.info( "Initialize Live: #{device_name}" )
      @live = FFI::PCap::Live.new(:dev=>device_name, :handler => FFI::PCap::CopyHandler, :promisc => true)
      DIY::Logger.info( "Listen on:  #{net} " )
      @running = false
      #~ @live.non_blocking= true
    end
    attr_reader :live
    
    # 发包
    def inject(packet_str)
      @live.send_packet(packet_str)
    end
    alias send_packet inject
    
    def loop(&block)
      @running = true
      while @running do
        @live.dispatch do |this, pkt|
          next unless pkt
          block.call(this, pkt)
        end
        sleep 0.1
      end
      DIY::Logger.debug "stopped loop recv..."
    end
    
    def break
      DIY::Logger.debug "stopping loop recv..."
      @running = false
    end
    
    def net
      @live.network + " / " + @live.netmask
    end
    
  end # end of class Live
  
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
DIY-pcap-0.3.2 lib/diy/live.rb
DIY-pcap-0.3.1 lib/diy/live.rb
DIY-pcap-0.3.0 lib/diy/live.rb
DIY-pcap-0.2.8 lib/diy/live.rb