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