// 10.2.9.32:51974 // Callback function invoked by Pcap.Net for every incoming packet private void PacketHandler(Packet aPacket) { iMutex.WaitOne(); if (iStop) { iMutex.ReleaseMutex(); throw (new Exception()); } if (aPacket.Ethernet.EtherType == PcapDotNet.Packets.Ethernet.EthernetType.IpV4) { IpV4Datagram ipv4 = aPacket.Ethernet.IpV4; if (ipv4.Destination == iRunningAddress) { if (ipv4.Protocol == IpV4Protocol.Udp) { var udp = ipv4.Udp; if (udp.DestinationPort == iRunningEndpoint.Port) { SongcastDatagram datagram = new SongcastDatagram(aPacket.Buffer); if (iPacketCount != 0) { if (!iHalt) { TimeSpan span = aPacket.Timestamp.Subtract(iLastTimestamp); if (span < iPacketMinTime) { iPacketMinTime = span; } if (span > iPacketMaxTime) { iPacketMaxTime = span; } } if (datagram.Frame != iLastFrame + 1) { Console.WriteLine("LOST FRAME before" + datagram.Frame); } iHalt = datagram.Halt; } iPacketCount++; iLastTimestamp = aPacket.Timestamp; iLastFrame = datagram.Frame; } } } } iMutex.ReleaseMutex(); }
// 10.2.9.32:51974 // Callback function invoked by Pcap.Net for every incoming packet private void PacketHandler(Packet aPacket) { iMutex.WaitOne(); if (iStop) { iMutex.ReleaseMutex(); throw (new Exception()); } if (aPacket.Ethernet.EtherType == PcapDotNet.Packets.Ethernet.EthernetType.IpV4) { IpV4Datagram ipv4 = aPacket.Ethernet.IpV4; if (ipv4.Destination == iRunningAddress) { if (ipv4.Protocol == IpV4Protocol.Udp) { var udp = ipv4.Udp; if (udp.DestinationPort == iRunningEndpoint.Port) { SongcastDatagram datagram = new SongcastDatagram(aPacket.Buffer); if (iPacketCount != 0) { if (!iHalt) { TimeSpan span = aPacket.Timestamp.Subtract(iLastTimestamp); if (span < iPacketMinTime) { iPacketMinTime = span; } if (span > iPacketMaxTime) { iPacketMaxTime = span; } } if (datagram.Frame != iLastFrame + 1) { Console.WriteLine("LOST FRAME before" + datagram.Frame); } iHalt = datagram.Halt; } iPacketCount++; iLastTimestamp = aPacket.Timestamp; iLastFrame = datagram.Frame; } } } } iMutex.ReleaseMutex(); }