private static void Device_OnPacketArrival(object sender, CaptureEventArgs e) { try { var packet = Packet.ParsePacket(e.Packet.LinkLayerType, e.Packet.Data); var ip = packet.Extract(typeof(IpPacket)) as IpPacket; var udp = packet.Extract(typeof(UdpPacket)) as UdpPacket; if (Coap.IsCoap(udp.PayloadData)) { File.WriteAllBytes($"{e.Device.Statistics.ReceivedPackets:0000}.raw", udp.PayloadData); var coap = new Coap(new KaitaiStream(udp.PayloadData)); var uri = coap.GetUri(ip.DestinationAddress.ToString(), udp.DestinationPort); var parameters = System.Web.HttpUtility.ParseQueryString(uri.Query); Console.WriteLine($"{e.Packet.Timeval.Date}: {packet}[CoAPPacket: Code={coap.Code}, Type={coap.Type}, MID={coap.MessageId}, Uri={uri}]"); // analyze CoAP message to generate LwM2M event: if (coap.IsRequest && coap.RequestMethod == RequestMethod.Post && uri.LocalPath.Equals("/rd")) { Console.WriteLine($"EVENT: [LwM2M.Register: endpoint={parameters["ep"]}, lifetime={parameters["lt"]}, version={parameters["lwm2m"]}, binding={parameters["b"]}]"); } } } catch (Exception) { Console.Error.WriteLine($"{e.Packet.Timeval.Date}: Unable to parse packet."); } }
public void TestMulticastIPv6ScopesThrowsException(int scope) { Assert.Throws <ArgumentOutOfRangeException>(() => Coap.GetMulticastIPv6ForScope(scope)); }
public string TestMulticastIPv6Scopes(int scope) { return(Coap.GetMulticastIPv6ForScope(scope)); }