void ProcessPacket(PacketDotNet.Packet packet) { try { var tcpPacket = packet.Extract <PacketDotNet.TcpPacket>(); var udpPacket = packet.Extract <PacketDotNet.UdpPacket>(); if (udpPacket != null) { var ipPacket = (PacketDotNet.IPPacket)udpPacket.ParentPacket; UdpPacketArived?.Invoke(this, new UdpPacketArivedEventArgs { Packet = new UdpPacket { SourcePort = udpPacket.SourcePort, DestinationPort = udpPacket.DestinationPort, SourceIp = ipPacket.SourceAddress.ToString(), DestinationIp = ipPacket.DestinationAddress.ToString(), Data = udpPacket.PayloadData ?? new byte[] { } } }); if (this.BuildUdpSessions) { this._udpStreamBuilder.HandlePacket(udpPacket); } _processingPrecentsPredicator.NotifyAboutProcessedData(packet.Bytes.Length); } else if (tcpPacket != null) { var ipPacket = (PacketDotNet.IPPacket)tcpPacket.ParentPacket; // Raise event Tcp packet arived event. TcpPacketArived?.Invoke(this, new TcpPacketArivedEventArgs { Packet = new TcpPacket { SourcePort = tcpPacket.SourcePort, DestinationPort = tcpPacket.DestinationPort, SourceIp = ipPacket.SourceAddress.ToString(), DestinationIp = ipPacket.DestinationAddress.ToString(), Data = tcpPacket.PayloadData ?? new byte[] { } } }); if (this.BuildTcpSessions) { this._tcpSessionsBuilder.HandlePacket(tcpPacket); } _processingPrecentsPredicator.NotifyAboutProcessedData(packet.Bytes.Length); } } catch (Exception ex) { // TODO: handle or throw this //Console.WriteLine(ex); } }
private void ProcessPacket(object sender, CaptureEventArgs e) { try { var packet = PacketDotNet.Packet.ParsePacket(e.Packet.LinkLayerType, e.Packet.Data); var tcpPacket = (PacketDotNet.TcpPacket)packet.Extract(typeof(PacketDotNet.TcpPacket)); if (tcpPacket != null) { var ipPacket = (PacketDotNet.IpPacket)tcpPacket.ParentPacket; // Raise event Tcp packet arived event. TcpPacketArived?.Invoke(this, new TcpPacketArivedEventArgs { Packet = new TcpPacket { SourcePort = tcpPacket.SourcePort, DestinationPort = tcpPacket.DestinationPort, SourceIp = ipPacket.SourceAddress.ToString(), DestinationIp = ipPacket.DestinationAddress.ToString(), Data = tcpPacket.PayloadData ?? new byte[] { } } }); if (this.BuildTcpSessions) { this._tcpSessionsBuilder.HandlePacket(tcpPacket); } _processingPrecentsPredicator.NotifyAboutProcessedData(packet.Bytes.Length); } } catch (Exception ex) { // TODO: handle or throw this //Console.WriteLine(ex); } }