Movatterモバイル変換


[0]ホーム

URL:


On this page

Was this helpful?

Opening an adapter and capturing the packets

Obtain a packet capture handle (Pcap) with a specific network interface (adapter) to look at packets on the network and process it with Pcap.loop(int, PacketHandler, T args).

Once the adapter is opened, the capture can be started with Pcap.dispatch(int, PacketHandler, T args) or Pcap.dispatch(int, PacketHandler, T args). These two functions are very similar, the difference is that Pcap.dispatch(int, PacketHandler, T args) returns (although not guaranteed) when the timeout expires while Pcap.loop(int, PacketHandler, T args) doesn't return until maximum packets have been captured, so it can block for an arbitrary period on an under-utilized network.

Docs: libpcap,javadoc.

public static void main(String[] _args)    throws ErrorException, PermissionDeniedException, PromiscuousModePermissionDeniedException,        TimestampPrecisionNotSupportedException, RadioFrequencyModeNotSupportedException,        NoSuchDeviceException, ActivatedException, InterfaceNotUpException,        InterfaceNotSupportTimestampTypeException {  var service = Service.Creator.create("PcapService");  try (var pcap = service.live(service.interfaces(), new DefaultLiveOptions())) {    try {      pcap.loop(          10,          (args, header, buffer) -> {            System.out.println("Args     : " + args);            System.out.println("Header   : " + header);            System.out.println("Packet   : " + buffer);          },          "Hello pcap!");    } catch (BreakException e) {      System.err.println(e.getMessage());    } catch (ErrorException e) {      System.err.println(e.getMessage());    }  }}
fun main() {  val service = Service.Creator.create("PcapService")  val pcap = service.live(service.interfaces(), DefaultLiveOptions())  try {    pcap.loop(      10,      { args: String, header: PacketHeader, buffer: PacketBuffer ->        println("Args     : $args")        println("Header   : $header")        println("Packet   : $buffer")      },      "Hello pcap!"    )  } catch (e: BreakException) {    System.err.println(e.message)  } catch (e: ErrorException) {    System.err.println(e.message)  }  pcap.close()}
def main(_args: Array[String]): Unit = {  val service = Service.Creator.create("PcapService")  val pcap = service.live(service.interfaces().next(), new DefaultLiveOptions())  try pcap.loop(10, (args: String, header: PacketHeader, buffer: PacketBuffer) => {    println("Args     : ", args)    println("Header   : ", header)    println("Packet   : ", buffer)  }, "Hello pcap!")  catch {    case e: BreakException =>      System.err.println(e.getMessage)    case e: ErrorException =>      System.err.println(e.getMessage)  }  pcap.close()}

Last updated

Was this helpful?


[8]ページ先頭

©2009-2025 Movatter.jp