/// <summary>
        /// Deal card.
        /// </summary>
        /// <param name="host">The host.</param>
        /// <param name="data">Data received from client.</param>
        public static void DealCard(PirateHost host, PirateMessage data)
        {
            Contract.Requires(host != null && data != null && data.Head == PirateMessageHead.Xcrd);
            var player = PirateMessage.GetPlayerName(data);
            if(player == null) {
                return;
            }

            var pclient = host.PlayerFromString(player);
            if(pclient == null) {
                return;
            }

            var card = Card.FromString(data.Body);
            if(card == null) {
                return;
            }

            pclient.GetCard(card);

            Console.WriteLine("Host: Sending card " + card.ToShortString() + " to " + pclient);

            var msg = new PirateMessage(PirateMessageHead.Xcrd, card.ToString());
            host.SendMessage(pclient, msg);

            if(host.Game.Round.CardsDealt == host.Game.Round.TotalCards) {
                RequestBets(host);
            }
        }
        /// <summary>
        /// Play card from player.
        /// </summary>
        /// <param name="host">The host.</param>
        /// <param name="data">Data received from client.</param>
        public static void PlayCard(PirateHost host, PirateMessage data)
        {
            Contract.Requires(host != null && data != null && data.Head == PirateMessageHead.Pcrd);
            var playerName = PirateMessage.GetPlayerName(data);
            var player = host.PlayerFromString(playerName);
            var card = Card.FromString(data.Body);

            if(!player.CardPlayable(card, host.Game.Round.BoardCards.FirstCard)) {
                ErrorMessage(host, player, PirateError.CardNotPlayable);
                var returnCard = new PirateMessage(PirateMessageHead.Xcrd, card.ToString());
                host.SendMessage(player, returnCard);
                RequestCard(host, player);
                return;
            }

            Console.WriteLine(player.Name + " plays " + card.ToShortString());

            var msg = new PirateMessage(
                PirateMessageHead.Pcrd, PirateMessage.ConstructBody(player.ToString(), card.ToString()));

            foreach(var pclient in host.GetPlayers()) {
                host.SendMessage(pclient, msg);
            }

            player.PlayCard(card);
            //host.Game.Round.PlayCard(player, card);
            if(!host.Game.Round.Finished) {
                RequestCard(host, host.PlayerFromIndex(host.Game.Round.CurrentPlayer));
            }else {
                host.Game.NewRound();
            }
        }