/// <summary> /// Start listening to a device /// </summary> /// <param name="device"></param> public void Listen(ICaptureDevice device) { try { _device = device; consoleWrite("Listening to " + device.Name); // Register our handler function to the 'packet arrival' event device.OnPacketArrival += new PacketArrivalEventHandler(device_OnPacketArrival); // Open the device for capturing int readTimeoutMilliseconds = 1000; if (device is AirPcapDevice) { // NOTE: AirPcap devices cannot disable local capture var airPcap = device as AirPcapDevice; airPcap.Open(SharpPcap.WinPcap.OpenFlags.DataTransferUdp, readTimeoutMilliseconds); } else if (device is WinPcapDevice) { var winPcap = device as WinPcapDevice; winPcap.Open(SharpPcap.WinPcap.OpenFlags.DataTransferUdp | SharpPcap.WinPcap.OpenFlags.NoCaptureLocal, readTimeoutMilliseconds); } else if (device is LibPcapLiveDevice) { var livePcapDevice = device as LibPcapLiveDevice; livePcapDevice.Open(DeviceMode.Promiscuous, readTimeoutMilliseconds); } else { throw new System.InvalidOperationException("unknown device type of " + device.GetType().ToString()); } device.Filter = "src port 9000"; // Start the capturing process device.StartCapture(); } catch { _form1.showPcapError(); } }