Exemple #1
0
        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();
                }
            });
        }
Exemple #2
0
        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();
        }