internal static void Main(string[] args)
        {
            const byte maxValue = byte.MaxValue;

            var         echoServer = new EchoServer(Dns.GetHostEntry("localHost").AddressList[0]);
            TcpListener server     = echoServer.Server;

            server.Start();

            while (true)
            {
                TcpClient     client     = server.AcceptTcpClient();
                byte[]        buffer     = new byte[maxValue];
                NetworkStream dataStream = client.GetStream();

                dataStream.Read(buffer, 0, maxValue);
                client.Client.Send(buffer);

                Console.WriteLine(Encoding.ASCII.GetString(buffer, 0, maxValue));
            }
        }
        static async Task <int> Main(string[] args)
        {
            Console.WriteLine("EchoServer");
            try
            {
                using (var source = new CancellationTokenSource())
                {
                    using (var echoServer = new EchoServer())
                    {
                        echoServer.Start(source.Token);
                        using (var publisher = new NetworkServicePublisher("EchoServer", "_echo._tcp", (ushort)echoServer.Port))
                        {
                            publisher.Start();
                            var running = true;
                            Console.CancelKeyPress += async(s, e) =>
                            {
                                await echoServer.StopAsync();

                                await publisher.StopAsync();

                                running = false;
                                Console.WriteLine("Goodbye!");
                            };
                            while (running)
                            {
                                await Task.Delay(1000, source.Token);
                            }
                        }
                    }
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                return(-1);
            }


            return(0);
        }