Держите TcpListerner в состоянии ожидания C # - PullRequest
0 голосов
/ 16 сентября 2018

у меня есть этот код для серверной и клиентской программы. клиентская программа отправляет значение на сервер, а сервер читает его. но здесь после первого сообщения сервер выключается. я хочу, чтобы он работал до тех пор, пока не закроется полное приложение. поэтому после закрытия 1 соединения оно будет ждать следующего соединения и так далее.

internal static async Task ServerHandler()
    {
        Console.Writeline("starting server...");
        IPAddress b = IPAddress.Any;
        TcpListener Server = new TcpListener(b, 5550);            
        Server.Start();            
        Console.Writeline("Server Started Sucessfully!");
        Console.Writeline("Waiting for Connection...");
        TcpClient Client = Server.AcceptTcpClient(); 

        string clientIPAddress = "Connected! => " + IPAddress.Parse(((IPEndPoint)Client.Client.RemoteEndPoint).Address.ToString());
        Console.Writeline(clientIPAddress);

        byte[] message = new byte[4096];
        int bytesRead;

        while (true)
        {                
            try
            {
                Stream MessageStream = Client.GetStream();
                bytesRead = MessageStream.Read(message, 0, 4096);
                ASCIIEncoding encoder = new ASCIIEncoding();
                string recivedMessage = encoder.GetString(message, 0, bytesRead);
                Console.Writeline(recivedMessage);
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
            }
            Client.Close();
            Server.Stop();
        }
    }
...