NetworkSniffer.IpSnifferWinPcap.device_OnPacketArrival C# (CSharp) Метод

device_OnPacketArrival() приватный Метод

private device_OnPacketArrival ( object sender, SharpPcap.CaptureEventArgs e ) : void
sender object
e SharpPcap.CaptureEventArgs
Результат void
        private void device_OnPacketArrival(object sender, CaptureEventArgs e)
        {
            IPv4Packet ipPacket;
            try
            {
                if (e.Packet.LinkLayerType != LinkLayers.Null)
                {
                    var linkPacket = Packet.ParsePacket(e.Packet.LinkLayerType, e.Packet.Data);
                    ipPacket = linkPacket.PayloadPacket as IPv4Packet;
                }
                else
                {
                    ipPacket = new IPv4Packet(new ByteArraySegment(e.Packet.Data,4,e.Packet.Data.Length-4));
                }
                if (ipPacket == null)
                    return;
            }
            catch
            {
                return;
                // ignored bad packet
            }

            OnPacketReceived(ipPacket);

            var now = DateTime.UtcNow;
            if (now <= _nextCheck) return;
            _nextCheck = now + TimeSpan.FromSeconds(20);
            var device = (WinPcapDevice) sender;
            if (device.Statistics.DroppedPackets == _droppedPackets &&
                device.Statistics.InterfaceDroppedPackets == _interfaceDroppedPackets)
            {
                return;
            }
            _droppedPackets = device.Statistics.DroppedPackets;
            _interfaceDroppedPackets = device.Statistics.InterfaceDroppedPackets;
            OnWarning(
                $"DroppedPackets {device.Statistics.DroppedPackets}, InterfaceDroppedPackets {device.Statistics.InterfaceDroppedPackets}, ReceivedPackets {device.Statistics.ReceivedPackets}");
        }