Example #1
0
        public void EncodeStringTest()
        {
            var input    = "hello";
            var data     = Converter.EncodeString(input);
            var output   = Converter.DecodeString(data);
            var expected = input;

            Assert.AreEqual(output, expected);
        }
Example #2
0
        public void HandleClientConnected(object clientObject)
        {
            TcpClient        client = clientObject as TcpClient;
            ServerSidePlayer player = new ServerSidePlayer((byte)GetNewPlayerID(), client);

            AddNewPlayer(player);
            byte[]         d = Converter.EncodeString("200");
            NetworkMessage connectedMessage = new NetworkMessage(player.Id, NetworkMessage.MessageType.ConnectedToServer, d);

            foreach (ServerSidePlayer p in Players)
            {
                SendMessage(p, connectedMessage);
            }

            Console.WriteLine(string.Format("Client connected: {0}. Id: {1}", client.Client.RemoteEndPoint.ToString(), player.Id));

            NetworkStream stream = client.GetStream();

            while (client.Connected)
            {
                try
                {
                    byte[] buffer = new byte[NetworkMessage.MAX_MESSAGE_BYTE_LENGTH];
                    stream.Read(buffer, 0, buffer.Length);
                    NetworkMessage networkMessage = NetworkMessage.FromBytes(buffer);
                    if (!networkMessage.ValidateSender())
                    {
                        break;
                    }

                    LogMessageReceived(networkMessage);

                    HandleRespondingToMessage(player, networkMessage);
                }
                catch
                {
                    Console.WriteLine("error");
                    stream.Close();
                    client.Dispose();
                }
            }
            Console.WriteLine("Disconnected from client id: {0}", player.Id);
            RemovePlayer(player);
            stream.Close();
            client.Dispose();
        }