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(); } } }
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(); } } }