public void StartListening() { listeningCondition = true; guessNumberService = new GuessNumberService(); tcpListener = new TcpListener(address, portNumber); tcpListener.Start(); listeningProcess = Task.Run(() => { byte[] bytes = new byte[256]; string data = null; try { while (listeningCondition) { TcpClient client = tcpListener.AcceptTcpClient(); data = null; NetworkStream stream = client.GetStream(); int i; while ((i = stream.Read(bytes, 0, bytes.Length)) != 0) { data = Encoding.ASCII.GetString(bytes, 0, i); GuessNumberRequestData requestData = DataConvertor.FromString <GuessNumberRequestData>(data); GuessNumberResponseData responseData = guessNumberService.ProcessRequest(requestData); data = DataConvertor.ToString <GuessNumberResponseData>(responseData); byte[] msg = Encoding.ASCII.GetBytes(data); stream.Write(msg, 0, msg.Length); } client.Close(); } } finally { tcpListener.Stop(); } }); }
static void Main(string[] args) { ClientModel client = ClientModel.Connect("127.0.0.1", 13000); Console.WriteLine("press any key to continue..."); Console.ReadKey(); bool playAgain = true; while (playAgain) { GuessNumberRequestData requestData = new GuessNumberRequestData(); requestData.NewGame = true; client.SendData(DataConvertor.ToString <GuessNumberRequestData>(requestData)); GuessNumberResponseData responseData = null; do { if (requestData.NewGame) { requestData.NewGame = false; } else { Console.WriteLine("Wrong guess."); } int number; Console.WriteLine("Guess number [0-9]:"); if (!int.TryParse(Console.ReadLine(), out number)) { Console.WriteLine("Wrong input!"); continue; } requestData.GuessedNumber = number; responseData = DataConvertor.FromString <GuessNumberResponseData>(client.SendData(DataConvertor.ToString <GuessNumberRequestData>(requestData))); } while (!responseData.RightNumber); Console.WriteLine("You did it! Wanna play again (press r to play again)."); if (Console.ReadKey().Key != ConsoleKey.R) { playAgain = false; } } Console.WriteLine("press any key to exit..."); Console.ReadKey(); }