Я использую серверы именованных каналов для межпроцессного взаимодействия. Я отправляю большой поток текста подключенному клиенту. Но клиент получает это в два сообщения сначала 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);
}
});
}
}
}