NamedPipeClientStream читает только 1024 байта данных за один раз ... он усекает мое сообщение - PullRequest
0 голосов
/ 15 января 2019

Я использую серверы именованных каналов для межпроцессного взаимодействия. Я отправляю большой поток текста подключенному клиенту. Но клиент получает это в два сообщения сначала 1024 и оставшиеся. Как я могу прочитать все сообщение сразу. Я не хочу добавлять какой-либо идентификатор или что-то еще.

using System;
using System.IO;
using System.IO.Pipes;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            StartServer();
            Task.Delay(1000).Wait();


            //Client
            var client = new NamedPipeServerStream("PipesOfPiece");
            client.WaitForConnection();
            StreamReader reader = new StreamReader(client);
            StreamWriter writer = new StreamWriter(client);

            while (true)
            {
                string input = Console.ReadLine();
                if (String.IsNullOrEmpty(input)) break;
                writer.WriteLine(input);
                writer.Flush();
                Console.WriteLine(reader.ReadLine());
            }
        }

        static void StartServer()
        {
            Task.Factory.StartNew(() =>
            {
                var server = new NamedPipeClientStream("PipesOfPiece");
                server.Connect();
                var buffer = new byte[4096];       


                while (true)
                {
                    var line = server.Read(buffer, 0, 4096);
                    string result = Encoding.Default.GetString(buffer);
                    Console.WriteLine(line);
                }
            });
        }
    }
}
...