private void toolStripButton1_Click(object sender, EventArgs e)
        {
            MemoryStream m = new MemoryStream();

            for (long i = 0; i < hb1.ByteProvider.Length; i++)
            {
                m.WriteByte(hb1.ByteProvider.ReadByte(i));
            }
            byte[] payload = m.ToArray();
            foreach (ClientInfo client in Global.clients)
            {
                QPacket q = new QPacket();
                q.m_oSourceVPort      = new QPacket.VPort(0x31);
                q.m_oDestinationVPort = new QPacket.VPort(0x3f);
                q.type          = QPacket.PACKETTYPE.DATA;
                q.flags         = new List <QPacket.PACKETFLAG>();
                q.payload       = new byte[0];
                q.uiSeqId       = (ushort)(++client.seqCounter);
                q.m_bySessionID = client.sessionID;
                RMCP rmc = new RMCP();
                rmc.proto    = (RMCP.PROTOCOL)protoIDs[toolStripComboBox1.SelectedIndex];
                rmc.methodID = Convert.ToUInt32(toolStripTextBox1.Text);
                rmc.callID   = ++client.callCounterRMC;
                RMCPCustom reply = new RMCPCustom();
                reply.buffer = payload;
                RMC.SendRequestPacket(client.udp, q, rmc, client, reply, true, 0);
            }
        }
        public static void ProcessPacket(byte[] data, IPEndPoint ep)
        {
            StringBuilder sb = new StringBuilder();

            foreach (byte b in data)
            {
                sb.Append(b.ToString("X2") + " ");
            }
            QPacket p = new QPacket(data);

            WriteLog(5, "received : " + p.ToStringShort());
            WriteLog(10, "received : " + sb.ToString());
            WriteLog(10, "received : " + p.ToStringDetailed());
            QPacket    reply  = null;
            ClientInfo client = null;

            if (p.type != QPacket.PACKETTYPE.SYN)
            {
                client = Global.GetClientByIDrecv(p.m_uiSignature);
            }
            switch (p.type)
            {
            case QPacket.PACKETTYPE.SYN:
                reply = QPacketHandler.ProcessSYN(p, ep, out client);
                break;

            case QPacket.PACKETTYPE.CONNECT:
                if (client != null)
                {
                    reply = QPacketHandler.ProcessCONNECT(client, p);
                }
                break;

            case QPacket.PACKETTYPE.DATA:
                RMC.HandlePacket(listener, p);
                break;

            case QPacket.PACKETTYPE.DISCONNECT:
                if (client != null)
                {
                    reply = QPacketHandler.ProcessDISCONNECT(client, p);
                }
                break;

            case QPacket.PACKETTYPE.PING:
                if (client != null)
                {
                    reply = QPacketHandler.ProcessPING(client, p);
                }
                break;
            }
            if (reply != null && client != null)
            {
                Send(reply, client);
            }
        }
 public static void ProcessDATA(QPacket p)
 {
     RMC.HandlePacket(p);
 }