Пример #1
0
        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.");
            }
        }
Пример #2
0
 public void TestMulticastIPv6ScopesThrowsException(int scope)
 {
     Assert.Throws <ArgumentOutOfRangeException>(() => Coap.GetMulticastIPv6ForScope(scope));
 }
Пример #3
0
 public string TestMulticastIPv6Scopes(int scope)
 {
     return(Coap.GetMulticastIPv6ForScope(scope));
 }