Example #1
0
        public void Listen()
        {
            while (true)
            {
                var srcAdd = new IPEndPoint(IPAddress.Any, 0);
                var data   = Client.Receive(ref srcAdd);
                var reply  = MessageHandler.Handle(data, this);

                Client.Send(reply, reply.Length, "127.0.0.1", 5132);
            }
        }
Example #2
0
        private void Handle(object obj)
        {
            var client = obj as TcpClient;
            var stream = client.GetStream();

            string receivedMessage;

            byte[] bytes = new byte[1 << 16];
            int    bit;

            try
            {
                while ((bit = stream.Read(bytes, 0, bytes.Length)) != 0)
                {
                    receivedMessage = Encoding.UTF8.GetString(bytes, 0, bit);
                    Console.WriteLine($"{Thread.CurrentThread.ManagedThreadId}: Server Received: {receivedMessage}");

                    string responseText = default;
                    try
                    {
                        var messageReader = new MessageReader(Constants.DefaultSeparator);
                        responseText = MessageHandler.Handle(messageReader.Read(receivedMessage)).GetAwaiter().GetResult();
                    }
                    catch (Exception E)
                    {
                        Console.WriteLine(E);
                        responseText = "Não foi possível ler a mensagem, tente novamente";
                    }

                    Byte[] responseBytes = Encoding.UTF8.GetBytes(responseText);
                    stream.Write(responseBytes, 0, responseBytes.Length);
                    Console.WriteLine($"{Thread.CurrentThread.ManagedThreadId}: Server Sent: {responseText}");
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("Falha na conexão com o cliente");
                Console.WriteLine(ex);
                client.Close();
            }
        }