public Itens_Compartilhados.RetornoJogada jogada(Itens_Compartilhados.Carta cartaEnv)
        {
            Itens_Compartilhados.Comandos comando = new Itens_Compartilhados.Comandos();
            comando.comando = "JOGADA";
            comando.carta   = cartaEnv;
            comando.ID      = this.ID;
            byte[] jogada = this.funcoes.ObjectToByteArray(comando);
            TrySend(jogada);
            byte[] buff     = new byte[32768];
            int    received = socketClient.Receive(buff);

            byte[] dataReceived = new byte[received];
            Array.Copy(buff, dataReceived, received);
            Itens_Compartilhados.RetornoJogada retornoJogada = new Itens_Compartilhados.RetornoJogada();
            retornoJogada = (Itens_Compartilhados.RetornoJogada)funcoes.ByteArrayToObject(buff);
            return(retornoJogada);
        }
        private void verificaStatus()
        {
            Itens_Compartilhados.Comandos comando = new Itens_Compartilhados.Comandos();
            comando.comando = "STATUS_JOGADORES";
            byte[] envioStatusJogador = this.funcoes.ObjectToByteArray(comando);
            socket.Send(envioStatusJogador);
            byte[] buff     = new byte[32768];
            int    received = socket.Receive(buff);

            byte[] dataReceived = new byte[received];
            Array.Copy(buff, dataReceived, received);
            Itens_Compartilhados.RetornoJogada retornoJogada = new Itens_Compartilhados.RetornoJogada();
            retornoJogada = (Itens_Compartilhados.RetornoJogada)funcoes.ByteArrayToObject(buff);
            refreshLista(retornoJogada.jogadores, retornoJogada.embaralhado);
            iniciaJogo(retornoJogada.jogadores);
        }
        /// <summary>ReceiveCallBack método da classe Server
        /// Evento realizado para receber e enviar dados do cliente através de um IASyncResult
        /// </summary>

        private void ReceiveCallback(IAsyncResult asyncronousResult)
        {
            Socket current = (Socket)asyncronousResult.AsyncState;
            int    received;

            try
            {
                received = current.EndReceive(asyncronousResult);
            }
            catch (SocketException) /*Catch realizado caso houver perca de conexão com o cliente*/
            {
                Console.WriteLine("Conexão com o cliente " + current.RemoteEndPoint.ToString() + " perdida.");
                jogo.removeJogador(current.RemoteEndPoint.ToString());
                current.Close();
                ListaDeClientesSockets.Remove(current);
                return;
            }

            byte[] recBuf = new byte[received];
            Array.Copy(_buffer, recBuf, received);
            Itens_Compartilhados.Comandos comando = new Itens_Compartilhados.Comandos();
            comando = (Itens_Compartilhados.Comandos)funcoes.ByteArrayToObject(recBuf);
            if (comando.comando == "JOGADA")
            {
                int primeiro;
                if (comando.ID == jogo.jogadorDaVez)
                {
                    jogo.jogadorDaVezJogou = true;
                }
                funcoes.escreveInfoCarta(comando.carta);
                jogo.jogadoresEmEspera++;
                primeiro = jogo.jogadoresEmEspera;
                jogo.jogadaEmEspera[jogo.jogadoresEmEspera] = comando.carta;
                if (primeiro == 0)
                {
                    while (jogo.qtdJogadores > (jogo.jogadoresEmEspera + 1))
                    {
                        ;
                    }
                    Itens_Compartilhados.RetornoJogada retornoJogada = new Itens_Compartilhados.RetornoJogada();
                    retornoJogada = jogo.jogada();
                    byte[] envioRetornoJogada = this.funcoes.ObjectToByteArray(retornoJogada);
                    Send(envioRetornoJogada);
                    jogo.resetJogada();
                }
                else
                {
                    while (jogo.jogadoresEmEspera > -1)
                    {
                        ;
                    }
                }
            }
            else if (comando.comando == "DESCONECTAR")
            {
                jogo.removeJogador(current.RemoteEndPoint.ToString());
                current.Shutdown(SocketShutdown.Both);
                current.Close();
                ListaDeClientesSockets.Remove(current);
                Console.WriteLine("Cliente Desconectado ");
                jogo.resetBarralho();
                return;
            }
            else if (comando.comando == "STATUS_JOGADORES")
            {
                Itens_Compartilhados.RetornoJogada statusJogadores = new Itens_Compartilhados.RetornoJogada();
                statusJogadores             = jogo.statusJogadores();
                statusJogadores.embaralhado = jogo.isEmbaralhado;
                byte[] envioStatusJogadores = this.funcoes.ObjectToByteArray(statusJogadores);
                current.Send(envioStatusJogadores);
            }
            else if (comando.comando == "STATUS_JOGADORES_ATRIBUTO")
            {
                Itens_Compartilhados.RetornoJogada statusJogadores = new Itens_Compartilhados.RetornoJogada();
                statusJogadores = jogo.statusJogadores();
                statusJogadores.jogadorDaVezJogou = jogo.jogadorDaVezJogou;
                if (comando.ID == jogo.jogadorDaVez)
                {
                    jogo.atributoDaVez = comando.atributo;
                }
                byte[] envioStatusJogadores = this.funcoes.ObjectToByteArray(statusJogadores);
                current.Send(envioStatusJogadores);
            }
            else if (comando.comando == "EMBARALHAR")
            {
                int primeiro;
                jogo.jogadoresEmEspera++;
                primeiro = jogo.jogadoresEmEspera;
                if (primeiro == 0)
                {
                    jogo.embaralhar();
                    while (!jogo.isEmbaralhado)
                    {
                        ;
                    }
                }
                jogo.resetJogada();
            }
            else if (comando.comando == "BUSCAR_BARALHO")
            {
                Itens_Compartilhados.RetornoJogada barralho = new Itens_Compartilhados.RetornoJogada();
                barralho = jogo.embaralhado;
                byte[] envioBarralho = this.funcoes.ObjectToByteArray(barralho);
                current.Send(envioBarralho);
            }
            else if (comando.comando == "JOGAR")
            {
                jogo.setJogar(comando.jogadores[0]);
            }
            else if (comando.comando == "PERDER")
            {
                for (int i = 0; i < jogo.jogadores.Length; i++)
                {
                    if (jogo.jogadores[i].ID == comando.ID)
                    {
                        jogo.jogadores[i].jogando = false;
                        jogo.qtdJogadores--;
                        if (jogo.jogadorDaVez == comando.ID)
                        {
                            jogo.reJogador();
                        }
                        Thread.Sleep(550);
                    }
                }
            }

            current.BeginReceive(_buffer, 0, _BUFFER_SIZE, SocketFlags.None, ReceiveCallback, current);
        }