/// <summary>
        /// Get current process list
        /// </summary>
        /// <returns></returns>
        public List <Process> getProcessList()
        {
            if (!isConnected)
            {
                throwNotConnectedException();
            }

            var packet = new Packets.IPacket()
            {
                id         = lastPacketId++,
                dataType   = RPC_PACKET.RPC_PROCESS_GET_LIST,
                dataLength = 0
            };

            sendPacket(packet);
            receivePacket <Packets.ResultPacket>(packet.id);

            List <Process> result    = new List <Process>();
            var            processes = receivePacket <Packets.ProcessListPacket>(packet.id).listProcesses;

            foreach (var item in processes)
            {
                result.Add(new Process(item.name, item.processId));
            }

            return(result);
        }
 private void sendPacket(Packets.IPacket packet)
 {
     sock.Send(packet.serializeHeader());
     if (packet.dataLength > 0)
     {
         sock.Send(packet.serialize());
     }
 }
        /// <summary>
        /// Disconnects from PlayStation 4
        /// </summary>
        public void disconnect()
        {
            var packet = new Packets.IPacket()
            {
                id         = lastPacketId++,
                dataType   = RPC_PACKET.RPC_TERMINATE,
                dataLength = 0
            };

            sendPacket(packet);
            sock.Dispose();
            isConnected = false;
        }