private void Handle(byte[] data, IPEndPoint endpoint)
        {
            var hex = data.ToHex();

            Console.WriteLine("Received: " + hex);
            if (hex.Equals("3f3120000000000000000000000034322000"))
            {
                //var packet = PRUdpPacket.Decode(data);
                var resp = "313f08000000000000000f8744db6a1b1887";
                //var packet1 = PRUdpPacket.Decode(resp.FromHex());
                Send(resp.FromHex(), endpoint);
            }
            else
            {
                var packet = PRUdpPacket.Decode(data);
                if (packet.Type == PacketTypes.PING)
                {
                    //todo, ping handling code
                }
                else if (packet.Type == PacketTypes.CONNECT)
                {
                    var response = new PRUdpPacket()
                    {
                        Flags               = new PacketFlags[] { PacketFlags.FLAG_ACK },
                        Type                = PacketTypes.CONNECT,
                        SessionId           = packet.SessionId,
                        Signature           = packet.Signature,
                        ConnectionSignature = packet.ConnectionSignature
                    };
                    var p = response.Encode();
                    Console.WriteLine("Sent: " + p.ToHex());
                    Send(p, endpoint);
                }
                else if (packet.Type == PacketTypes.DATA)
                {
                    var rvconndata = new RVConnectionData()
                    {
                        StationUrl = "prudps:/127.0.0.1:10264"
                    };
                    var rmc = new RMCPayload()
                    {
                        CallId     = packet.RMCPayload.CallId,
                        MethodId   = packet.RMCPayload.MethodId,
                        ProtocolId = packet.RMCPayload.ProtocolId,
                        Payload    = rvconndata.Encode()
                    };
                    var response = new PRUdpPacket()
                    {
                        Flags               = new PacketFlags[] { PacketFlags.FLAG_ACK, PacketFlags.FLAG_NEED_ACK },
                        Type                = PacketTypes.DATA,
                        SessionId           = packet.SessionId,
                        Signature           = packet.Signature,
                        Payload             = rmc.Encode(),
                        ConnectionSignature = packet.ConnectionSignature
                    };
                    var p = response.Encode().ToHex();
                    Console.WriteLine("Sent: " + p);
                    Send(p.FromHex(), endpoint);
                }
                else
                {
                    Console.WriteLine("Unknown packet: " + hex);
                }
            }
        }