Сервер пишет сообщение клиенту только тогда, когда Auto Writer Stream Writer имеет значение true. Кто-нибудь может сказать мне, почему?

Вот мой код на стороне сервера, который записывает данные клиенту.

         try
         {
            IPHostEntry addr = Dns.GetHostEntry(Dns.GetHostName());
            IPAddress localIP = 
             addr.AddressList.Where(x => 
            x.AddressFamily      ==AddressFamily.InterNetwork).FirstOrDefault();
            //Console.WriteLine(localIP);
            listener = new TcpListener(localIP,2055);
            listener.Start();

            while (true)
            {
                s = listener.AcceptSocket();
                stream = new NetworkStream(s);
                strread = new StreamReader(stream);
                strwrite = new StreamWriter(stream);
                //strwrite.AutoFlush = true;
                strwrite.WriteLine("Hello");
                //    string recvmessage = strread.ReadLine();
                //    Console.WriteLine(recvmessage);
                //    if(string.IsNullOrEmpty(recvmessage))
                //    strwrite.WriteLine("Idealist");
            }


        }

Серверный код записывает данные на клиент только тогда, когда автозапуск задан верно. Может кто-нибудь, пожалуйста, объясните

1 ответ

Решение

Потому что, конечно, он очищается автоматически. Если вы посмотрите на Javadoc, вы увидите, что автозапуск происходит, когда данные содержат новую строку. Если вы не установите это, данные не будут сброшены, пока вы не позвоните flush() самостоятельно или закройте OutputStream или же Writer сам.

Другие вопросы по тегам