public void ProcessClientRequests(object argument)
        {
            string clientName = $"Client {ClientConcreteComponent.NumberOfConnectedClient}";

            connectedClients.Add(ClientConcreteComponent.NumberOfConnectedClient, new ConnectedClientDecarated(new ClientConcreteComponent(((TcpClient)argument), clientName)));

            int       clientDictrionaryKey = ClientConcreteComponent.NumberOfConnectedClient;
            TcpClient client   = (TcpClient)argument;
            bool      playGame = false;
            Random    random   = new Random();
            int       number   = random.Next(1, 100);

            try
            {
                StreamReader reader = new StreamReader(client.GetStream());
                writer = new StreamWriter(client.GetStream());

                ClientList.Add(client);

                //Thread thread;
                //thread = new Thread(() => SeverSendMessage($"Connected. {clientName} "));
                //thread.Start();

                SeverSendMessage($"Connected. {clientName} ");

                var s = String.Empty;
                while (!(s = reader.ReadLine()).Equals("Exit") || (s == null))
                {
                    clientName = connectedClients[clientDictrionaryKey - 1].GetClientName();
                    s          = s.Trim();

                    if (s == "im exit")
                    {
                        connectedClients.Remove(clientDictrionaryKey - 1);
                        break;
                    }
                    if (CloseExistingConnectionOnCall)
                    {
                        break;
                    }

                    if (playGame && !s.Equals(null))
                    {
                        try
                        {
                            string response = ExtensionsMethods.Game(number, Int32.Parse(s));

                            SeverSendMessage($"{clientName} {response}");
                            //thread = new Thread(() => SeverSendMessage($"{clientName} {response}"));
                            //thread.Start();
                        }
                        catch (Exception e) { }
                    }
                    if (s.Contains("command change name"))
                    {
                        ChangeClientName(clientDictrionaryKey - 1, "new client name");
                        Console.WriteLine("From client -> " + s);

                        SeverSendMessage($"{clientName}:  {s}");
                        //thread = new Thread(() => SeverSendMessage($"{clientName}:  {s}"));
                        //thread.Start();
                    }
                    if (s.Contains("show info"))
                    {
                        s = s.Remove(0, 10).Trim();
                        var adapterFunctionality = new StrategyFunctionality();
                        s = adapterFunctionality.ComponentInformation(s);

                        Console.WriteLine("From client -> " + s);

                        SeverSendMessage($"{clientName}:  {s}");
                        //thread = new Thread(() => SeverSendMessage($"{clientName}:  {s}"));
                        //thread.Start();
                    }
                    else
                    {
                        Console.WriteLine("From client -> " + s);
                        SeverSendMessage($"{clientName}:  {s}");
                        //thread = new Thread(() => SeverSendMessage($"{clientName}:  {s}"));
                        //thread.Start();
                    }
                    if (s == "game")
                    {
                        playGame = true;
                    }
                }
                reader.Close();
                writer.Close();
                client.Close();
                Console.WriteLine("Closing client connection!");
            }
            catch (IOException)
            {
                Console.WriteLine("Problem with client communication. Exiting thread.");
            }
            catch (Exception) { }
            finally
            {
                if (client != null)
                {
                    client.Close();
                }
            }
        }
Пример #2
0
        public void ProcessClientRequests(object argument)
        {
            var client   = (TcpClient)argument;
            var playGame = false;
            var random   = new Random();
            var number   = random.Next(1, 100);

            try
            {
                var reader = new StreamReader(client.GetStream());
                var writer = new StreamWriter(client.GetStream());

                SeverSendMessage(writer, "Connected.");
                string s = String.Empty;
                while (!(s = reader.ReadLine()).Equals("Exit") || (s == null))
                {
                    s = s.Trim();

                    if (CloseExistingConnectionOnCall)
                    {
                        break;
                    }

                    if (playGame && !s.Equals(null))
                    {
                        try
                        {
                            string response = ExtensionsMethods.Game(number, Int32.Parse(s));
                            SeverSendMessage(writer, response);
                        }
                        catch (Exception e) { }
                    }
                    if (s.Contains("show info"))
                    {
                        s = s.Remove(0, 9).Trim();
                        var adapterFunctionality = new StrategyFunctionality();
                        s = adapterFunctionality.ComponentInformation(s);

                        Console.WriteLine("From client -> " + s);
                        SeverSendMessage(writer, s);
                    }
                    else
                    {
                        Console.WriteLine("From client -> " + s);
                        SeverSendMessage(writer, s);
                    }
                    if (s == "game")
                    {
                        playGame = true;
                    }
                }
                reader.Close();
                writer.Close();
                client.Close();
                Console.WriteLine("Closing client connection!");
            }
            catch (IOException)
            {
                Console.WriteLine("Problem with client communication. Exiting thread.");
            }
            catch (Exception exception)
            {
                Console.WriteLine(exception);
            }
            finally
            {
                if (client != null)
                {
                    client.Close();
                }
            }
        }